搜索bfs
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
int N,M;
char map[110][110];
bool flag[110][110];
//int dir[8][2]={-1,1,0,1,1,1,-1,0,1,0,-1,-1,0,-1,1,-1};
int dir[8][2]={ {-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0} };
void dfs(int i,int j)
{
map[i][j]='.';
for(int k=0;k<8;k++)
{
int dx = i+dir[k][0];
int dy = j+dir[k][1];
if(dx>=0 && dx<N && dy>=0 && dy < M && map[dx][dy]=='W' )
{
//flag[dx][dy]=true;
dfs(dx,dy);
}
}
}
int main()
{
while(scanf("%d%d",&N,&M)!=EOF)
{
for(int i=0;i<N;i++)
{
scanf("%s",map[i]);
}
memset(flag,false,sizeof(flag));
int sum=0;
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(map[i][j]=='W')
{
sum++;
flag[i][j]=true;
dfs(i,j);
}
}
}
printf("%d\n",sum);
}
return 0;
}
poj 2386 Lake Counting
最新推荐文章于 2021-09-21 19:37:45 发布