算法习题---4-10洪水(UVa815)
一:题目
有一个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)的更多相关文章
- 【算法习题】数组中任意2个(3个)数的和为sum的组合
题1.给定一个int数组,一个数sum,求数组中和为sum的任意2个数的组合 @Test public void test_find2() { int[] arr = { -1, 0, 2, 3, 4 ...
- HDU 3791 二叉搜索树 (数据结构与算法实验题 10.2 小明) BST
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3791 中文题不说题意. 建立完二叉搜索树后进行前序遍历或者后序遍历判断是否一样就可以了. 跟这次的作业第 ...
- 数据结构和算法(Golang实现)(10)基础知识-算法复杂度主方法
算法复杂度主方法 有时候,我们要评估一个算法的复杂度,但是算法被分散为几个递归的子问题,这样评估起来很难,有一个数学公式可以很快地评估出来. 一.复杂度主方法 主方法,也可以叫主定理.对于那些用分治法 ...
- Java实现 蓝桥杯VIP 算法提高 前10名
算法提高 前10名 时间限制:1.0s 内存限制:256.0MB 问题描述 数据很多,但我们经常只取前几名,比如奥运只取前3名.现在我们有n个数据,请按从大到小的顺序,输出前10个名数据. 输入格式 ...
- 算法习题---4-9数据挖掘(Uva1591)
一:题目 这是最懵逼的一道题,什么鬼......... [刷题]算法竞赛入门经典(第2版) 4-9/UVa1591 - Data Mining(详细题目看这个吧,不想多说) 二:代码实现 #defin ...
- tarjan算法 习题
dfs树与tarjan算法 标签(空格分隔): 517coding problem solution dfs树 tarjan Task 1 给出一幅无向图\(G\),在其中给出一个dfs树\(T\), ...
- 算法导论——lec 10 图的基本算法及应用
搜索一个图是有序地沿着图的边訪问全部定点, 图的搜索算法能够使我们发现非常多图的结构信息, 图的搜索技术是图算法邻域的核心. 一. 图的两种计算机表示 1. 邻接表: 这样的方法表示稀疏图比較简洁紧凑 ...
- 【算法习题】正整数数组中和为sum的任意个数的组合数
1.递归实现(参考:https://blog.csdn.net/hit_lk/article/details/53967627) public class Test { @org.junit.Test ...
- July 算法习题 - 字符串4(全排列和全组合)
https://segmentfault.com/a/1190000002710424 思想:当前层各节点首元素不同,则各节点的剩余元素也不同:下一层节点交换范围为首元素以外的元素 全排列算法: vo ...
随机推荐
- 《CoderXiaoban》第八次团队作业:Alpha冲刺 3
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件测试基 ...
- DT6.0下搜索页解决canonical获取乱码问题
最近研究dt6.0,官方内核默认是把搜索页屏蔽的,但是做seo的人都知道,搜索页聚合是争取排名的好地方,所以我就二次开发搜索页,具体可以查看前几期分享的,今天说说关于搜索的canonical的url乱 ...
- 01.Vue前端路由学习目标
路由的基本概念与原理 vue-router的基本使用 vue-router嵌套路由 vue-router动态路由匹配 vue-router命名路由 vue-router编程式导航 基于vue-rout ...
- Java - 基础到进阶
# day01 一:基本操作 package _01.java基本操作; /** * 文档注释 */ public class _01Alls { public static void main(St ...
- (一)IDEA使用,基础配置
Setting分为全局设置和项目设置,全局设置对所有项目都有效,项目设置对当前项目有效. 1.通用的配置最好还是Settings全局设置,省的每个项目都要重新设置: 2. IDEA主题,字体设置: ...
- Linux https认证原理
HTTPS在传输的过程中会涉及到三个密钥:服务器端的公钥和私钥,用来进行非对称加密客户端生成的随机密钥,用来进行对称加密一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步.1.客户端向服务 ...
- PHP Socket 编程之9个主要函数的使用之测试案例
php的socket编程算是比较难以理解的东西吧,不过,我们只要理解socket几个函数之间的关系,以及它们所扮演的角色,那么理解起来应该不是很难了,在笔者看来,socket编程,其实就是建立一个网络 ...
- Delphi赋
DELPHI者,经典开发工具.美奂美仑之开发环境也. 盖论DELPHI其身世,实为神界之神物,后借宝蓝公司之手,于1990年代,现于江湖. DELPHI一出江湖,码农爱之,企业爱之.一时间,风雨雷动, ...
- 98: 模拟赛-神光 dp
$code$ #include <cstdio> #include <cstring> #include <algorithm> using namespace s ...
- cf 911F 树的直径+贪心
$des$ 给定一棵 n 个节点的树,你可以进行 n ? 1 次操作,每次操作步骤如下:选择 u,v 两个度数为 1 的节点.将 u,v 之间的距离加到 ans 上.将 u 从树上删除.求一个操作序列 ...