POJ-2386-Lake Counting
题目链接
http://poj.org/problem?id=2386
题意有一个N*M的园子雨后起了积水。八连通的积水被认为是连在一起的。请求出园子总共有多少水洼?
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<stdio.h>
int n,m;
char map[110][110];
void dfs(int x,int y)
{
map[x][y]='.';
for(int dx=-1; dx<=1; dx++)
{
for(int dy=-1; dy<=1; dy++)
{
int nx=x+dx;
int ny=y+dy;
if(nx>=0&&nx<n&&ny>=0&&ny<m&&map[nx][ny]=='W')
dfs(nx,ny);
}
}
}
int main(void)
{
int i,j,k;
while(scanf("%d%d",&n,&m)==2)
{
getchar();
k=0;
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);
k++;
}
printf("%d\n",k);
}
return 0;
}