题意:统计水洼的数量,‘W’表示有水的地方,当八个方向任何一个方向有水就表示同一个水洼。
思路:DFS,贴一个深搜作为模板。
#include<stdio.h>
#include<string.h>
#define mx 110
int t_map[mx][mx];
int n,m;
void dfs(int x,int y)
{
int xx,yy;
t_map[x][y]=0;
for(int dx=-1;dx<=1;dx++)
for(int dy=-1;dy<=1;dy++)
{
xx=x+dx;
yy=y+dy;
if(xx>=0&&xx<n&&yy>=0&&yy<m&&t_map[xx][yy]==1)
dfs(xx,yy);
}
}
int main()
{
int cnt;
char s[mx];
while(~scanf("%d%d",&n,&m))
{
cnt=0;
//构造0,1地图;
for(int i=0;i<n;i++)
{
scanf("%s",s);
for(int j=0;j<m;j++)
{
if(s[j]=='W')
t_map[i][j]=1;
else
t_map[i][j]=0;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
if(t_map[i][j]==1)
{
dfs(i,j);
cnt++;
}
}
printf("%d\n",cnt);
}
return 0;
}