1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int MAX = 100; 5 char arr[MAX][MAX];//存放 “w 和 . ” 6 7 int nx[4] = {0,1,0,-1};//4个坐标(0,1)(1,0)(0,-1)(-1,0) 8 int ny[4] = {1,0,-1,0}; 9 10 int n,m;//n行,m列 11 12 13 void init(); 14 void solve(); 15 void dfs(int x,int y); 16 17 18 void init(){ 19 cin>>n>>m;//输入行数列数 20 for(int i=0;i<n;i++){ 21 for(int j=0;j<m;j++){ 22 cin>>arr[i][j];//输入“w 和 . ” 23 } 24 } 25 solve(); 26 } 27 28 29 void solve(){ 30 int result = 0; 31 for(int i=0;i<n;i++){ 32 for(int j=0;j<m;j++){ 33 if(arr[i][j] == 'w'||arr[i][j] == 'W'){ 34 dfs(i,j);//搜索(i,j)周围的 w 35 result++; 36 } 37 } 38 } 39 cout<<"四连块的数量为"<<result<<endl; 40 } 41 42 void dfs(int x,int y){ 43 44 arr[x][y] = '.'; 45 for(int i=0;i<4;i++){ 46 int X=x+nx[i]; 47 int Y=y+ny[i]; 48 if(X>=0&&X<=n&&Y>=0&&Y<=m&&(arr[X][Y]=='w'||arr[X][Y] == 'W')){ 49 dfs(X,Y); 50 } 51 } 52 } 53 54 int main(){ 55 init(); 56 return 0; 57 }