P1596 [USACO10OCT] Lake Counting S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int m,n;
char g[N][N];
bool st[N][N]; //走/没走
int dx[]= {-1,-1,-1,0,0,1,1,1}; //八联通
int dy[]= {-1,0,1,1,-1,1,0,-1};
int sum; //水坑的数量void dfs(int x,int y) {for(int i=0; i<8; i++) {int a=x+dx[i],b=y+dy[i];if(a<0 || a>=n || b<0 || b>=m) continue; //注意判断的是a,bif(st[a][b]) continue; //注意判断的是a,bif(g[a][b]!='W') continue; //注意判断的是a,bst[a][b]=true;dfs(a,b);}
}
int main() {cin>>n>>m;for(int i=0; i<n; i++) {scanf("%s",g[i]);}for(int i=0; i<n; i++) {for(int j=0; j<m; j++) {if(g[i][j]=='W' && !st[i][j]) { //注意这里dfs(i,j); //注意sum++;}}}cout<<sum<<endl;return 0;
}