poj2386Lake Counting
来源:互联网 发布:jquery 1.10.2.js 编辑:程序博客网 时间:2024/06/06 14:13
题意是这样的,给你一个N*M的矩形图,这个图由两个东西组成,'.'和'W',
W代表这个地方有水,
.代表这个地方没水。
如果一个有水的地方它的上下左右,左上,坐下,右上,右下也有水,那么
就看成它们连成一块,连在一起的有水的地方看成一个水洼。
现在告诉你N和M以及这个矩形图,要你判断图中有多少个水洼。
我是用dfs做的,
具体做法是首先找一个有水的点,然后如果这个地方有水,则水洼数+1,
然后从这个点出发,进行dfs,把与它相连的有水的地方都变成没水的地方,
也就是'.',这样的话,最后得出的水洼数就是题意所要求的。
代码如下
#include<iostream>using namespace std;int row,line;char map[110][110];void init(){int i,j;scanf("%d%d",&row,&line);for(i=0;i<row;i++)scanf("%s",map[i]);}bool isbeyond(int i,int j){if(i<0||i>=row||j<0||j>=line)return 1;return 0;}void dfs(int i,int j){int x,y;map[i][j]='.';for(x=-1;x<2;x++)for(y=-1;y<2;y++)if(!isbeyond(i+x,j+y)&&map[i+x][j+y]=='W')dfs(i+x,j+y);}void solve(){int sum=0,i,j;init();for(i=0;i<row;i++)for(j=0;j<line;j++)if(map[i][j]=='W'){sum++;dfs(i,j);}printf("%d\n",sum);}int main(){solve();}
0 0
- poj2386Lake Counting
- poj2386Lake Counting
- POJ2386Lake Counting
- poj2386Lake Counting(dfs)
- poj2386Lake Counting之dfs
- poj2386Lake Counting(DFS算法)
- Polya Counting
- Counting sort
- POJ_2386_Lake Counting
- Counting Sequences
- Counting-ACM
- Counting sort
- uva10198 Counting
- Counting sort
- Counting Sheep
- Counting Ones
- Lake Counting
- Counting Squares
- 各种浏览器的UserAgent 及JS和PHP对其使用
- 转载 JSTL标签库学习
- [LeetCode] 3Sum
- RAPID 信号的互锁和同步 WaitTestAndSet 和 TestAndSet
- 几种排序算法的最简单实现方式
- poj2386Lake Counting
- C++中的几种符合类型
- Java——网络编程
- cpp与cpp之间传递消息
- Lucas–Kanade光流算法
- 如何找出IOS App的URL Scheme
- WFP面试题
- Java——正则表达式(字符串操作)
- ADPlus详解