标签:
问题描述:共有多少块相邻的空白的区域
注意递归和边界问题的值的设置
源代码如下:
#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); }
标签:
原文地址:http://www.cnblogs.com/ly-rabbit-wust/p/5575200.html