黑白图像

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include <iostream>
using namespace std;
const int maxn=1010;
int mat[maxn][maxn];
int visit[maxn][maxn];
void dfs(int x,int y)
{
    if(visit[x][y]||mat[x][y]==0) return ;
    else
    {
        visit[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;
    int count=0;
    scanf("%d",&n);
    memset(mat,0,sizeof(mat));
    memset(visit,0,sizeof(visit));
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            scanf("%d",&mat[i][j]);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            if(!visit[i][j]&& mat[i][j])
            {
                count++;
                dfs(i,j);
            }
    printf("%d\n",count);
    return 0;
}

运行结果:

猜你喜欢

转载自blog.csdn.net/weixin_42373330/article/details/81941134