博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HLG 1143泉水 【广搜】
阅读量:6245 次
发布时间:2019-06-22

本文共 1660 字,大约阅读时间需要 5 分钟。

Description

 Leyni是一个地址调查员,有一天在他调查的地方突然出现个泉眼。由于当地的地势不均匀,有高有低,他觉得如果这个泉眼不断的向外溶出水来,这意味着这里在不久的将来将会一个小湖。水往低处流,凡是比泉眼地势低或者等于的地方都会被水淹没,地势高的地方水不会越过。而且又因为泉水比较弱,当所有地势低的地方被淹没后,水位将不会上涨,一直定在跟泉眼一样的水位上。

   由于Leyni已经调查过当地很久了,所以他手中有这里地势的详细数据。所有的地图都是一个矩形,并按照坐标系分成了一个个小方格,Leyni知道每个方格的具体高度。我们假定当水留到地图边界时,不会留出地图外,现在他想通过这些数据分析出,将来这里将会出现一个多大面积的湖。

Input

有若干组数据,每组数据的第一行有四个整数n,m,p1,p2(0<n,m,p1,p2<=1000),n和m表示当前地图的长和宽,p1和p2表示当前地图的泉眼位置,即第p1行第p2列,随后的n行中,每行有m个数据。表示这每一个对应坐标的高度。

Output

输出对应地图中会有多少个格子被水充满。

Sample Input

3 5 2 3
3 4 1 5 1
2 3 3 4 7
4 1 4 1 1
Sample Output
6
 
代码:
View Code
#include
#include
int ge[1010][1010]; int a[200002]; int used[1010][1010]; int main() {
int n,m,p1,p2,x,y,b,u,z,i,j,rear,front; while(scanf("%d%d%d%d",&n,&m,&p1,&p2)!=EOF) {
for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&ge[i][j]); rear=-1,front=0; memset(used,0,sizeof(used)); a[++rear]=p1;a[++rear]=p2; used[p1][p2]=1; while(front<=rear) {
x=a[front++];y=a[front++]; u=ge[x][y]; if(x+1<=n&&ge[x+1][y]<=u&&used[x+1][y]==0) { a[++rear]=x+1;a[++rear]=y; used[x+1][y]=1;ge[x+1][y]=u;} if(x-1>=1&&ge[x-1][y]<=u&&used[x-1][y]==0) { a[++rear]=x-1;a[++rear]=y; used[x-1][y]=1;ge[x-1][y]=u;} if(y+1<=m&&ge[x][y+1]<=u&&used[x][y+1]==0) { a[++rear]=x;a[++rear]=y+1; used[x][y+1]=1;ge[x][y+1]=u;} if(y-1>=1&&ge[x][y-1]<=u&&used[x][y-1]==0) { a[++rear]=x;a[++rear]=y-1; used[x][y-1]=1;ge[x][y-1]=u;} } for(i=1,z=0;i<=n;i++) for(j=1;j<=m;j++) if(used[i][j]==1) z++; printf("%d\n",z); } return 0; }

转载于:https://www.cnblogs.com/dream-wind/archive/2012/03/15/2397793.html

你可能感兴趣的文章
CSS 各种定位(position)方式的区别
查看>>
每周聚划算 超值软件汇总:云市场迎新年大礼包 专场五折封顶劲省2100元
查看>>
【区块链之技术进阶】扒一扒某乎上面对于区块链的理解(二)
查看>>
如何从PostgreSQL源码分析哪些操作需要超级用户权限 - 阿里云rds superuser提供了哪些权限...
查看>>
用java进行面向对象编程,面向对象是什么意思
查看>>
博拉科技浅谈中国企业的智能制造之路
查看>>
[LeetCode]--29. Divide Two Integers
查看>>
php如何获取原生请求体
查看>>
java web开发 高并发处理
查看>>
PHP 高级编程之多线程(二)
查看>>
ART世界探险(12) - OAT文件分析(2) - ELF文件头分析(中)
查看>>
AFNetworking 和 ASIHTTPRequest
查看>>
Qt之自定义界面(实现无边框、可移动)
查看>>
MS SQL修改数据库名称
查看>>
【RMAN】使用RMAN duplicate复制同机数据库
查看>>
概率论快速学习03:概率公理补充
查看>>
C++ 对象的内存布局(上)
查看>>
向Java开发者介绍Scala
查看>>
【软考点点】计算机基础知识
查看>>
hdu2066一个人的旅行(多源点多汇点的最短路径问题)
查看>>