本题比较简单,直接dfs即可,如果发现有水涡W,就将相连接的水涡全部设置为.
下面是AC代码~
#include <iostream>
#include <cstring>
using namespace std;
#define Max 666
char water[Max][Max];
int N,M;
int pos[9][3]={{0,0,0},{0,-1,0},{0,-1,1},{0,0,1},{0,1,1},{0,1,0},{0,1,-1},{0,0,-1},{0,-1,-1}};
void dfs(int x,int y);
int main()
{
cin>>N>>M;
int count=0;
for(int i=0;i<=N-1;i++)
{
cin>>water[i];
}
for(int i=0;i<=N-1;i++)
{
for(int j=0;j<=M-1;j++)
{
if(water[i][j]=='W')
{
dfs(i,j);
count++;
}
}
}
cout<<count<<endl;
return 0;
}
void dfs(int x,int y)
{
water[x][y]='.';
for(int i=1;i<=8;i++)
{
int nx=x+pos[i][1];
int ny=y+pos[i][2];
if(nx>=0&&nx<=N-1&&ny>=0&&ny<=M-1&&water[nx][ny]=='W')
{
dfs(nx,ny);
}
}
}