一:题目

有一个n*m(<=n,m<=)的网格,每个格子都是边长为10米的正方形,网格四周是无限大的墙壁。
输入每个格子的海拔高度,以及网格内雨水的总体积,输出水位的海拔高度以及有多少百分比的区域有水

(一)样例输入

 3        //3行3列的网格
45    //格子原本海拔高度 10000      //要注入的水总量
0       //表示结束输入

(二)样例输出

Region
Water level is 46.67 meters.
66.67 percent of the region is under water.

二:代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string> #define M 30
#define N 30 float Area_M[M][N];
float Area_W[M][N];
int m, n;
float c;

获取水平高度等信息

void getWaterHighInfo()
{
int reg_c;
float w_min,H_all = 0.0; while (c>)
{
w_min = Area_M[][] + Area_W[][],reg_c = ; //设置最小水平初始值 //先找到最小水平面值
for (int i = ; i < m; i++)
for (int j = ; j < n; j++)
if (w_min>Area_M[i][j] + Area_W[i][j])
w_min = Area_M[i][j] + Area_W[i][j]; //向其中放水
for (int i = ; i < m; i++)
{
for (int j = ; j < n; j++)
if (Area_M[i][j] + Area_W[i][j] == w_min)
{
Area_W[i][j] += 0.01;
reg_c++;
}
}
c -= 0.01 * 10 * 10*reg_c; //减去相应水量
}
//打印水平高度
//先找到一个有水的方格
reg_c = ;
for (int i = ; i < m; i++)
{
for (int j = ; j < n; j++)
if (Area_W[i][j] != )
{
reg_c++;
H_all += Area_W[i][j]+Area_M[i][j];  //因为float含有误差,我们单独输出一个数据可能有误差,所以我们将所有数据获取,取平均值来减少误差
}
} //打印百分比
printf("Water level is %.2f meters.\n", H_all / reg_c);
printf("%.2f percent of the region is under water.\n", reg_c*100.0 / (m*n));
}

主函数:包含获取输入信息

void main()
{
FILE* fp = freopen("data10.in", "r", stdin);
freopen("data10.out", "w", stdout);
int count = ;
while (!feof(fp))
{
scanf("%d %d", &m, &n);
getchar();
if (m == )
break;
printf("Region %d\n", count++);
//获取山体高度
for (int i = ; i < m; i++)
{
for (int j = ; j < n; j++)
scanf("%f", &Area_M[i][j]);
getchar();
}
scanf("%f", &c);
getchar();
memset(Area_W, , sizeof(Area_W));
getWaterHighInfo();
} freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
}

算法习题---4-10洪水(UVa815)的更多相关文章

  1. 【算法习题】数组中任意2个(3个)数的和为sum的组合

    题1.给定一个int数组,一个数sum,求数组中和为sum的任意2个数的组合 @Test public void test_find2() { int[] arr = { -1, 0, 2, 3, 4 ...

  2. HDU 3791 二叉搜索树 (数据结构与算法实验题 10.2 小明) BST

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3791 中文题不说题意. 建立完二叉搜索树后进行前序遍历或者后序遍历判断是否一样就可以了. 跟这次的作业第 ...

  3. 数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法

    算法复杂度主方法 有时候,我们要评估一个算法的复杂度,但是算法被分散为几个递归的子问题,这样评估起来很难,有一个数学公式可以很快地评估出来. 一.复杂度主方法 主方法,也可以叫主定理.对于那些用分治法 ...

  4. Java实现 蓝桥杯VIP 算法提高 前10名

    算法提高 前10名 时间限制:1.0s 内存限制:256.0MB 问题描述 数据很多,但我们经常只取前几名,比如奥运只取前3名.现在我们有n个数据,请按从大到小的顺序,输出前10个名数据. 输入格式 ...

  5. 算法习题---4-9数据挖掘(Uva1591)

    一:题目 这是最懵逼的一道题,什么鬼......... [刷题]算法竞赛入门经典(第2版) 4-9/UVa1591 - Data Mining(详细题目看这个吧,不想多说) 二:代码实现 #defin ...

  6. tarjan算法 习题

    dfs树与tarjan算法 标签(空格分隔): 517coding problem solution dfs树 tarjan Task 1 给出一幅无向图\(G\),在其中给出一个dfs树\(T\), ...

  7. 算法导论——lec 10 图的基本算法及应用

    搜索一个图是有序地沿着图的边訪问全部定点, 图的搜索算法能够使我们发现非常多图的结构信息, 图的搜索技术是图算法邻域的核心. 一. 图的两种计算机表示 1. 邻接表: 这样的方法表示稀疏图比較简洁紧凑 ...

  8. 【算法习题】正整数数组中和为sum的任意个数的组合数

    1.递归实现(参考:https://blog.csdn.net/hit_lk/article/details/53967627) public class Test { @org.junit.Test ...

  9. July 算法习题 - 字符串4(全排列和全组合)

    https://segmentfault.com/a/1190000002710424 思想:当前层各节点首元素不同,则各节点的剩余元素也不同:下一层节点交换范围为首元素以外的元素 全排列算法: vo ...

随机推荐

  1. HihoCoder1236 Scores

    Scores 求五维偏序(≤).强制在线. \(n,q\le 50000\) 烂大街的题解 考虑如果我们能用bitset找到每一维有哪些比询问点小,然后把每一维的结果取交集,得到的就是答案了. 然后对 ...

  2. Dubbo源码分析:Dubbo协议解码

    Dubbo协议解码时序图

  3. 堆优化Prim 最小生成树 模板

    #include <bits/stdc++.h> using namespace std; const int MAXN = 5005; const int MAXM = 200005; ...

  4. Kafka、ActiveMQ、RabbitMQ、RocketMQ区别

    1.区别: Kafka和RocketMQ的区别: 1.两者对于消息的单机吞吐量.时效性.可用性.消息可靠性都差不多,其中时效性就是消息延迟都在ms级,kafka吞吐量会更大. 2.功能支持方面:Kaf ...

  5. Restful API 指南

    作为软件开发人员,我们大多数人在日常生活中使用或构建 REST api.API 是系统之间的默认通信方式.亚马逊是如何有效地使用 api 进行通信的最佳例子. 在这篇文章中,我将讨论如何更好地设计 R ...

  6. Acwing P283 多边形 题解

    Analysis 总体来说是一个区间DP 此题首先是一个环,要你进行删边操作,剩下的在经过运算得到一个最大值 注意事项: 1.删去一条边,剩下的构成一条线,相当于求此的最大值,经典区间DP该有的样子: ...

  7. Hive 数据类型与文件格式

    一.基本数据类型 1.基本数据类型 Tinyint  1byte有符号整数  比如20 Smalint 2byte有符号整数 比如20 Int          4byte有符号整数 比如20 Big ...

  8. Linux rpm安装指定安装路径

    可以使用prefix参数. rpm -i –prefix=/home/gpadmin    greenplum-db-6.0.0-rhel6-x86_64.rpm 将greenplum-db-6.0. ...

  9. poj 3735 稀疏矩阵矩阵快速幂

    设人数为 $n$,构造 $(n + 1) \times (n + 1)$ 的矩阵 得花生:将改行的最后一列元素 $+ 1$ \begin{gather}\begin{bmatrix}1 & 0 ...

  10. warning insecure world writable dir ruby mode 040777,gem insstal sass error failed to build gem native extension

    //1.删除原gem源 gem sources --remove https://rubygems.org/ //2.添加国内镜像 gem source -a https://gems.ruby-ch ...