码迷,mamicode.com
首页 > 其他好文 > 详细

八连块问题

时间:2016-06-11 14:32:36      阅读:567      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:共有多少块相邻的空白的区域

注意递归和边界问题的值的设置

 

源代码如下:

#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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!