POJ 2386 Lake Counting (DFS)
2010-01-20 21:40
489 查看
Description
Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors.
Given a diagram of Farmer John's field, determine how many ponds he has.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.
Output
* Line 1: The number of ponds in Farmer John's field.
Sample Input
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
Sample Output
3
Hint
OUTPUT DETAILS:
There are three ponds: one in the upper left, one in the lower left,and one along the right side.
Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors.
Given a diagram of Farmer John's field, determine how many ponds he has.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.
Output
* Line 1: The number of ponds in Farmer John's field.
Sample Input
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
Sample Output
3
Hint
OUTPUT DETAILS:
There are three ponds: one in the upper left, one in the lower left,and one along the right side.
#include<iostream> using namespace std; const int MAX = 110; char map[MAX][MAX]; int vis[MAX][MAX]; void dfs(int x, int y) { if(vis[x][y] == 1 || map[x][y] == '.'|| map[x][y] == 0) return;//若曾经访问过这个格子,或当前格子是空地,或者当前格子为0(即出界)则返回 vis[x][y] = 1; //递归访问周围8个格子 dfs(x-1,y-1); dfs(x-1,y); dfs(x-1,y+1); dfs(x,y-1); dfs(x,y+1); dfs(x+1,y-1); dfs(x+1,y); dfs(x+1,y+1); } int main() { memset(map,0,sizeof(map));//初始化为0,作为边界 memset(vis,0,sizeof(vis));//初始化为0,表示全未访问过 int m,n,cnt = 0; cin >> m >> n; for(int i = 1;i <= m;++i) for(int j = 1;j <= n;++j) cin >> map[i][j];//将地图放在矩阵中间,周围有一圈0,方便对出界的判断 for(int i = 1;i <= m;++i) for(int j = 1;j <= n;++j) { if(!vis[i][j] && map[i][j] == 'W')//若找到未被访问过的格子且当前格子是水 { ++cnt; dfs(i,j); } } cout << cnt <<endl; return 0; }
相关文章推荐
- POJ:2386 Lake Counting(dfs)
- poj 2386:Lake Counting(简单DFS深搜)
- POJ 2386 Lake Counting (水题,DFS)
- (Relax DFS专题1.2)POJ 2386 Lake Counting(使用DFS来计算有多少坨东西是连通的)
- poj 2386 Lake Counting (DFS~)
- POJ 2386 Lake Counting (DFS)
- POJ 2386 Lake Counting 简单的DFS搜索
- POJ - 2386 dfs-Lake Counting
- 【DFS】POJ 2386 Lake Counting
- POJ 2386 Lake Counting(经典dfs)
- POJ 2386 Lake Counting - DFS
- 【DFS】poj 2386 Lake Counting
- POJ 2386 Lake Counting (DFS-floodfill)
- poj 2386 Lake Counting 深搜DFS
- POJ2386 Lake Counting 【DFS】
- POJ 2386 Lake Counting 简单的DFS搜索
- POJ 2386 Lake Counting(DFS)
- poj_2386_lake counting(DFS)
- POJ 2386 Lake Counting(dfs)
- POJ - 2386 Lake Counting (DFS)