Poj 2386 Lake Counting
2015-08-17 19:30
323 查看
click here~~
解题思路:
dfs ,注意从8个方面进行搜索:
上代码:
[code] ***Lake Counting*** Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24201 Accepted: 12216 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
解题思路:
dfs ,注意从8个方面进行搜索:
上代码:
[code]#include <iostream> #include <cstdio> #include <cstring> using namespace std; int n,m,ans; char map[110][110]; bool judge(int i,int j) { if(i>=n || i<0) return false; if(j>=m || j<0) return false; if(map[i][j] == '.') return false; return true; } void dfs(int i,int j) { map[i][j] = '.'; if(judge(i+1, j)) dfs(i+1, j); if(judge(i, j+1)) dfs(i, j+1); if(judge(i-1, j)) dfs(i-1, j); if(judge(i, j-1)) dfs(i, j-1); if(judge(i+1, j+1)) dfs(i+1, j+1); if(judge(i-1, j-1)) dfs(i-1, j-1); if(judge(i+1, j-1)) dfs(i+1, j-1); if(judge(i-1, j+1)) dfs(i-1, j+1); } int main() { while(cin>>n>>m) { getchar(); ans=0; for(int i=0; i<n; i++) gets(map[i]); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { if(map[i][j] == 'W') { ans++; dfs(i,j); } } } cout<<ans<<endl; } return 0; }
相关文章推荐
- HDU 2883 kebab 最大流(纯靠建图)
- Light OJ 1188 Fast Queries(分块暴力)
- Fork函数初识
- OC_NSString、
- 2440按键模块
- Cell自适应高度
- 用O_APPEND标志open一个文件,能否用lseek在任意位置读写
- AppDelegate.cpp文件详解
- 用O_APPEND标志open一个文件,能否用lseek在任意位置读写
- UVA 10285 Longest Run on a Snowboard
- 1-Android基础知识
- POJ 3669 Meteor Shower
- 好多问题
- 添加主机失败
- HDOJ 1869 六度分离(最短路--dijkstra)
- oracle学习第一弹----逻辑存储结构
- Oracle实现列的自动增长
- 极客学院免费vip
- POJ3038(Blue Jeans)
- Android 事件分发机制详解