八连块
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 }
以上是关于八连块的主要内容,如果未能解决你的问题,请参考以下文章