1 #include <bits/stdc++.h> 2 3 using namespace std; 4 char a[105][105]; 5 int dx[9]={0,-1,-1,-1,0,0,1,1,1}; 6 int dy[9]={0,-1,0,1,-1,1,-1,0,1}; 7 int N,M; 8 int ans; 9 void dfs(int x,int y)//初始位置 10 { 11 a[x][y]='.'; 12 for(int i=1;i<=8;i++) 13 { 14 int xx=x+dx[i]; 15 int yy=y+dy[i]; 16 if(xx<1||x>N||y<1||y>M||a[xx][yy]=='.')continue;//判断是否越界 17 a[xx][yy]='.'; //回溯 18 dfs(xx,yy); 19 20 } 21 } 22 int main() 23 { 24 25 cin>>N>>M; 26 for(int i=1;i<=N;i++) 27 { 28 for(int j=1;j<=M;j++) 29 { 30 cin>>a[i][j]; 31 } 32 } 33 34 for(int i=1;i<=N;i++) 35 { 36 for(int j=1;j<=M;j++) 37 { 38 if(a[i][j]=='W') 39 { 40 ans++; 41 dfs(i,j); 42 43 } 44 } 45 } 46 cout<<ans; 47 return 0; 48 }