@[yiban202241040105](/user/890929)
40行左右的递归非要写成bfs。
和你的bfs思路一样,往8个方向拓展就行了。
```cpp
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=110;
ll n,m;
ll s;
char c[N][N];
ll sx[8]={0,1,0,-1,-1,1,-1,1};<<八个x方向
ll sy[8]={1,0,-1,0,-1,1,1,-1};<<八个y方向
void kz(ll x,ll y)<<拓展
{
if(c[x][y]=='W'&&x>=1&&x<=n&&y>=1&&y<=m)
{
c[x][y]='.';<<将搜到的W全都换成.
for(int i=0;i<8;i++)
kz(x+sx[i],y+sy[i]);
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>c[i][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(c[i][j]=='W')
{
s++;
kz(i,j);
}
}
}
cout<<s;
return 0;
}
```
而且bfs不是正解,容易超时。
by Aventurine_stone @ 2023-11-04 16:34:42