POJ - Lake Counting(DFS)
2013-10-24 17:28
155 查看
[align=center]Lake Counting[/align]
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
Sample Output
Hint
OUTPUT DETAILS:
There are three ponds: one in the upper left, one in the lower left,and one along the right side.
Source
USACO 2004 November
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.
Source
USACO 2004 November
/* * 假设从任意一点W开始,不停地把邻接的部分用'.'代替。1次DFS之后与初始动这个W连接的所有W都被替换成'.'因此直到图中不再存在W为止。 * 总共进行DFS的次数就是最后的结果咯!8个方向对应了8种状态转移,每个各自作为DFS的参数至多被调用一次,所以时间复杂度为:O(8*N*M)。 * */ #include <iostream> using namespace std; char pos[101][101]; int n,m; void dfs(int x, int y) { pos[x][y] = '.'; for(int dx = -1; dx <= 1; dx++) for(int dy = -1; dy <= 1; dy++) { int nx = x + dx, ny = y + dy; if(0<=nx&&nx<n&&0<=ny&&ny<m&&pos[nx][ny]=='W') dfs(nx,ny); } return ; } int main(void) { while(cin>>n>>m) { for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) cin>>pos[i][j]; int res = 0; for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) { if(pos[i][j] == 'W') { dfs(i,j); res++; } } cout<<res<<endl; } return 0; }
相关文章推荐
- POJ-2386 Lake Counting (思维+简单dfs)
- POJ2386 Lake Counting 【DFS】
- POJ 2386 Lake Counting(dfs)
- POJ2386 Lake Counting(DFS)
- POJ 2386 Lake Counting(DFS)
- poj 2386 Lake Counting(DFS 杂这么多这种类型的水题啊。。。。)
- 深度搜索DFS-Lake Counting(POJ NO.2386)
- poj 2386 Lake Counting-----DFS
- Lake Counting (POJ No.2386) DFS
- POJ 2386 Lake Counting (DFS or BFS)
- poj 2386 Lake Counting 【dfs(模板)】
- (Relax DFS1.2)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模板题
- poj_2386_lake counting(DFS)
- POJ-2386--Lake Counting---DFS(深搜)
- POJ 2386 Lake Counting (DFS-floodfill)
- POJ 2386 Lake Counting (dfs)