poj 2386 Lake Counting
2014-10-27 16:36
204 查看
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
统计有多少组八连通W
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
统计有多少组八连通W
#include <iostream> #include <string.h> #include <stdio.h> using namespace std; char map[105][105]; bool vis[105][105]; int dir[8][2]={{1,-1},{1,0},{1,1},{0,-1},{0,1},{-1,-1},{-1,0},{-1,1}}; int n,m,cnt; bool judge(int x,int y) { if(!vis[x][y] && map[x][y]=='W'&& x>=0 && x<n && y>=0 && y<m) { return true; } return false; } void dfs(int x,int y) { vis[x][y]=true; for (int i=0;i<8; i++) { if(judge(x+dir[i][0], y+dir[i][1])) { dfs(x+dir[i][0], y+dir[i][1]); } } } int main() { while (scanf("%d%d",&n,&m)!=EOF) { cnt=0; for (int i=0; i<n; i++) { scanf("%s",map[i]); } memset(vis, false, sizeof(vis)); for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { if(!vis[i][j] && map[i][j]=='W') { dfs(i, j); cnt++; } } } printf("%d\n",cnt); } return 0; }
相关文章推荐
- poj 2386 Lake Counting
- POJ 之2386 Lake Counting
- POJ-2386--Lake Counting---DFS(深搜)
- POJ 2386 Lake Counting
- poj 2386 Lake counting
- POJ 2386 Lake Counting(深搜)
- poj 2386 Lake Counting
- POJ 2386 Lake Counting (DFS)
- POJ 2386 Lake Counting
- poj 2386 Lake Counting 【dfs(模板)】
- Poj 2386 Lake Counting
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting (水题,DFS)
- POJ 2386 Lake Counting
- POJ 2386(Lake Counting)DFS
- POJ 2386 Lake Counting(深搜)
- POJ 2386 Lake Counting
- POJ-2386 Lake counting
- [POJ] 2386 Lake Counting