有一个大小为 N×M 的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出
园子里总共有多少水洼?(八连通指的是下图中相对 W 的.的部分)
其中W是积水,.是干地
…
.W.
…
限制条件
N, M ≤ 100
输入样例:
N=10, M=12
园子如下图(’W’表示积水, ‘.’表示没有积水)
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 field[100][100];
void dfs(int x,int y);
int main()
{
int res=0;
scanf("%d%d",&n,&m);
int i,j;
for(i=0;i<n;i++)
scanf("%s",&field[i]);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(field[i][j]=='w')
{
dfs(i,j);
res++;
}
}
printf("%d\n",res);
return 0;
}
void dfs(int x,int y)
{
field[x][y]='.';
int nx,ny;
for(int dx=-1;dx<=1;dx++)
{
for(int dy=-1;dy<=1;dy++)
{
nx=x+dx;
ny=y+dy;
if(0<=nx && nx<n && 0<=ny &&ny<m&&field[nx][ny]=='w')
dfs(nx,ny);
}
}
return ;
}