八连块

Posted codinglife-190505

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八连块相关的知识,希望对你有一定的参考价值。

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

 

以上是关于八连块的主要内容,如果未能解决你的问题,请参考以下文章

20612统计八连块

图1(八连块)

八连块

八连块问题:统计图中相相连黑色区域的个数

油田(Oil Deposits)-用DFS求连通块

用DFS求连通块(种子填充)