八连块问题
Posted ly_rabbit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八连块问题相关的知识,希望对你有一定的参考价值。
问题描述:共有多少块相邻的空白的区域
注意递归和边界问题的值的设置
源代码如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 100 +10 using namespace std; int mat[MAX][MAX] ,vis[MAX][MAX]; void dfs(int x,int y) { if(!mat[x][y] || vis[x][y]) //1代表空白 return; vis[x][y]=1; dfs(x-1,y-1); dfs(x-1,y); dfs(x-1,y+1); dfs(x,y-1); dfs(x,y+1); dfs(x+1,y-1); dfs(x+1,y); dfs(x+1,y+1); } void main() { memset(mat,0,sizeof(mat)); memset(vis,0,sizeof(mat)); int n,i,j; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&mat[i+1][j+1]); int count=0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(mat[i][j] && !vis[i][j]) {count++;dfs(i,j);} } printf("%d\n",count); }
以上是关于八连块问题的主要内容,如果未能解决你的问题,请参考以下文章