书中第32页有解析
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,m;
char field[110][110];
void dfs(int x, int y)
{
field[x][y] = '.';
for(int i = -1; i <= 1; i++)
{
for(int j = -1; j <= 1; j++)
{
int dx = x + i;
int dy = y + j;
if(dx < n && dx >= 0 && dy < m && dy >= 0 && field[dx][dy] == 'W') dfs(dx,dy);
}
}
return;
}
int main()
{
#ifdef xxz
freopen("in.txt","r",stdin);
#endif // xxz
ios::sync_with_stdio(false);//这句可以加速OI速度
while(cin>>n>>m)
{
int ans = 0;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin>>field[i][j];
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
{
if(field[i][j] == 'W')
{
dfs(i,j);
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}