水洼

来源:互联网 发布:汽车导航一体机端口 编辑:程序博客网 时间:2024/05/17 10:52
/*有一个大小为N*M的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼(八连通指的是下图中相对W的*部分) *** *W* *** 输入10 12W........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;}

0 0