您的位置:首页 > 其它

八连块问题(刘汝佳)

2016-03-12 17:19 155 查看
http://wenku.baidu.com/link?url=v8pqTJx34ttdwvzsCHbkYvlV6euGrk-Gq_qhqj3J4_CrqGLqZFHULgw_EXTd2KPc-U2ATiXMu4gNl8JCdBAWvMNgK9C4sYL9OUrMvnEt8dq&pn=51

#include <cstdio>

#include <iostream>

#include <cstring>

using namespace std;

int mat[100][100];

int vis[100][100];

int dfs(int x,int y)

{

    if(!mat[x][y] || vis[x][y])

    {

       return 0;

    }

     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);

}

int main()

{

    int n;

    while(cin>>n)

    {

        memset(mat,0,sizeof(mat));

        memset(vis,0,sizeof(vis));

        int count=0;

        for(int i=1;i<=n;i++)

            for(int j=1;j<=n;j++)

        {

            cin>>mat[i][j];

        }

        for(int i=1;i<=n;i++)

            for(int j=1;j<=n;j++)

        {

            if(mat[i][j] &&(!vis[i][j]))

            {

                ++count;

                dfs(i,j);

            }

        }

        cout<<"八连快的个数为:"<<count<<endl;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: