#include<bits/stdc++.h>
using namespace std;
const int N=110;
char a[N][N];
int n,m,ans,i,j;
int fx[4]={0,1,0,-1};//左下右上
int fy[4]={-1,0,1,0};//逆时针
void dfs(int x,int y)
{
a[x][y]='.';
for(int i=0;i<4;i++)
{
int tx=x+fx[i];
int ty=y+fy[i];
if(a[tx][ty]=='W')
{
dfs(tx,ty); //寻找相邻位置的积水 是就给.
}
}
}
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++)//输入池塘的状态
for(j=1;j<=m;j++)
{
cin>>a[i][j];
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]=='W')
{
ans++;//把当前位置计数后 寻找相邻位置的积水并给.
dfs(i,j);
}
}
cout<<ans;
return 0;
}
/* 测试用例
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
*/
数池塘 dfs
于 2023-11-25 15:04:49 首次发布