深搜即可,代码如下:
#include <bits/stdc++.h>
using namespace std;
char a[200][200];
int dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={-1,0,1,-1,1,-1,0,1};
int ans,n,m;
void dfs(int x,int y) {
a[x][y]='.';
for(int i=0; i<8; ++i) {
int xx=x+dx[i];
int yy=y+dy[i];
if((xx>=0)&&(xx<n)&&(yy>=0)&&(yy<m)&&(a[xx][yy]=='W'))
dfs(xx,yy);
}
}
int main() {
cin>>n>>m;
for(int i=0; i<n; ++i)
for(int j=0; j<m; ++j)
cin>>a[i][j];
for(int i=0; i<n; ++i)
for(int j=0; j<m; ++j)
if(a[i][j]=='W') {
dfs(i,j);
ans++;
}
cout<<ans<<endl;
return 0;
}