#include<iostream>
#define MAX 101
using namespace std;
int N,M;
char map[MAX][MAX];
int num=0; *//计数*
int next[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; *//斜着也算连着*
bool flag=0;
void dfs(int x,int y)
{
map[x][y]='.'; //将‘W’变为‘.’
for(int i=0;i<8;i++)
{
int dx=x+next[i][0];
int dy=y+next[i][1];
if(dx>=0&&dx<=N-1&&dy>=0&&dy<=M-1&&map[dx][dy]=='W') *//只要不越界就可以*
dfs(dx,dy);
}
return ;
}
int main()
{
scanf("%d %d",&N,&M); *//输入*
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cin>>map[i][j];
}
}
*//输出*
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(map[i][j]=='W')
{
dfs(i,j);
num++;
}
}
}
cout<<num<<endl;
return 0;
}
POJ 2386 水洼(深度优先搜索)
最新推荐文章于 2021-03-26 22:02:04 发布