#include<bits/stdc++.h>
using namespace std;
bool vis[1010][1010];//vis数组
char a[1010][1010];
int n,m,ans=0;//ans
int dir[8][2]={{0,1},{-1,0},{1,0},{0,-1},{1,-1},{1,1},{-1,1},{-1,-1}};
void dfs(int x,int y){
vis[x][y]=1;//a[x][y]已搜索过
int nx,ny;
for(int i=0;i<8;i++){
nx=x+dir[i][0];
ny=x+dir[i][1];
if(nx>x||ny>y||nx<1||ny<1||vis[x][y]==1||a[x][y]=='.'){
continue;
}
dfs(nx,ny);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]=='W'&&vis[i][j]==0){//如果未搜
dfs(i,j);//dfs
ans++;
}
}
}
cout<<ans;//输出
return 0;
}
看过我以前的帖子,你肯定知道接下来我要说啥了: