水洼
2016-03-30 16:50
288 查看
/*有一个大小为N*M的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请 求出园子里总共有多少水洼 (八连通指的是下图中相对W的*部分) *** *W* *** 输入 10 12 W........WW. .WWW.....WWW ....WW...WW. .........WW. .........W.. ..W......W.. .W.W.....WW. W.W.W.....W. .W.W......W. ..W.......W. 输出 3*/ #include <stdio.h> int n,m; char map[101][101]; /*void dfs(int a,int b) { if(a>=0&&b>=0&&a<n&&b<m&&map[a][b]=='W') { map[a][b]='.'; dfs(a,b+1); dfs(a,b-1); dfs(a+1,b); dfs(a-1,b); dfs(a-1,b-1); dfs(a-1,b+1); dfs(a+1,b-1); dfs(a+1,b+1); } return ; }*/ void dfs(int a,int b) { map[a][b]='.'; int x,y,dx,dy; for(x=-1;x<=1;x++) { for(y=-1;y<=1;y++) { dx=x+a; dy=y+b; if(dx>=0&&dy>=0&&dx<n&&dy<m&&map[dx][dy]=='W') { dfs(dx,dy); } } } return ; } int main() { int i,j,count; count=0; scanf("%d%d",&n,&m); getchar(); for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%c",&map[i][j]); } getchar(); } for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(map[i][j]=='W') { dfs(i,j); count++; } } } printf("%d\n",count); return 0; }
相关文章推荐
- 水池数目
- Realm实战总结---Android
- 硬盘管理心得
- 使用delphi+intraweb进行微信开发5—准备实现微信API,先从获取AccessToken开始
- 虚拟机linux 挂载windows共享目录 给linux的nginx服务器使用
- poj3294 --Life Forms
- JAVA中循环删除list中元素的方法总结
- C3P0数据库连接池的使用工具和使用数据库连接池来进行查询操作
- struts拦截器心得
- gdb+gdbserver调试arm-linux程序
- JavaScript资料收集
- Chapter 13:Understanding HTML&Assignment
- NSLog 字符含义
- Hero In Maze 台州oj
- 程序开发心理学第三篇
- tyvj 1463 智商问题
- Java 集合类整理
- 置位比特位置查找java
- 最短路 51Nod1693 水群
- C++实验2-标准体重