• Flooded! UVA


    错了好多遍,不知道为啥出错,如果有大神发现,请求指点!!!

    附错误代码(错的不知道怎么回事): 

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int maxn = 32 + 5;
    int hblock[maxn*maxn];         /*elevation*/
    int main()
    {
        int n, m;
        while(scanf("%d%d", &n, &m) != EOF)
        {
            if(n == 0 && m == 0)
                break;
    //        memset(hblock, 0, sizeof(hblock));
            for(int i = 0; i < m * n; i++)
                scanf("%d", &hblock[i]);
            hblock[m*n] = 2147483647;
    //        cout << hblock[m*n] << endl;
            sort(hblock, hblock + m*n);
            double v;
            double h;
            cin >> v;
            v = v / 100.0;            /*除以一个区的底面积,得到其高度*/
            double mark = 0;       /*标记被淹的极限*/
            for(int i = 1; i <= m * n; i++)
            {
                v += hblock[i-1];
                h = v / i;          /**淹完一个时的高度**/
                if(h < hblock[i])
                {
                    mark = i;
                    break;
                }
            }
            int cases = 0;
            printf("Region %d
    ", ++cases);
            printf("Water level is %.2lf meters.
    ", h);
            printf("%.2lf percent of the region is under water.
    ", 100.0*mark/double(n*m));        /*double强制转换不可忘,不然会有大量损失*/
    
        }
        return 0;
    
    }
    

    正确代码:

    #include <algorithm>
    #include <iostream>
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    using namespace std;
    #define INF 0x7fffffff
    int h[35 * 35], n, m;
    double v, H, k;
    int main()
    {
        int cas = 0;
        while(scanf("%d%d", &n, &m), n)
        {
            n *= m;
            for(int i = 0; i < n; i++)
                scanf("%d", h + i);
            h[n] = INF, n++;
            sort(h, h + n);
            scanf("%lf", &v);
            v /= 100.0;
            for(int i = 1; i <= n; i++)
            {
                v += h[i - 1];
                H = v / i;
                if(H < h[i])
                {
                    k = i;
                    break;
                }
            }
            printf("Region %d
    ", ++cas);
            printf("Water level is %.2lf meters.
    ", H);
            printf("%.2lf percent of the region is under water.
    
    ", 100.0 * k / (n - 1));
        }
        return 0;
    }
  • 相关阅读:
    二进制包安装MySQL数据库
    Nginx 访问日志轮询切割
    安装Nginx服务
    生产环境常见的HTTP状态码列表
    SSH批量部署服务
    MYSQL数据库的优化
    inotify+rsync实现实时同步部署
    rsync同步架构
    Linux shell脚本编程(三)
    Linux shell脚本编程(二)
  • 原文地址:https://www.cnblogs.com/KeepZ/p/11143797.html
Copyright © 2020-2023  润新知