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 }