• uva 527 Oil Deposits


    图论入门题,找多少个八连块,简单的dfs解决

    //给出一个m*n的矩阵,有些方格染色,一个方格的邻接方格有8个,就是它四周的八个
    //一个染色的方格的邻接方格中也有染色的话那么把他们看做是一起的,都归为一个八连块
    //题目要找这个矩阵中有多少个八连块
    #include <stdio.h>
    #include <string.h>
    #define N 110
    #define M 110
    bool a[M][N],vis[M][N];
    int m,n;
    
    void dfs(int i , int j)
    {
        if(!a[i][j] || vis[i][j]) return ;
        vis[i][j]=1;
        dfs(i-1,j-1);  dfs(i-1,j);   dfs(i-1,j+1);
        dfs(i,j-1);                  dfs(i,j+1);
        dfs(i+1,j-1);  dfs(i+1,j);   dfs(i+1,j+1);
    
        return ;
    }
    int main()
    {
        int i,j,count;
        char s[M];
        while(1)
        {
            scanf("%d%d",&m,&n);
            if(!m) break;
            memset(vis,0,sizeof(vis));
            memset(a,0,sizeof(a));
            for(i=1; i<=m; i++)
            {
                scanf("%s",s+1);
                for(j=1; j<=strlen(s+1); j++)
                    if(s[j]=='@')
                        a[i][j]=1;
            }
            
            for(j=0; j<=n+1; j++)  vis[0][j]=vis[m+1][j]=1;
            for(i=0; i<=m+1; i++)  vis[i][0]=vis[i][n+1]=1;
    /*
            printf("打印a矩阵\n");
            for(i=1; i<=m; i++)
            {
                for(j=1; j<=n; j++)
                    printf("%d",a[i][j]);
                printf("\n");
            }
            printf("打印vis矩阵\n");
            for(i=0; i<=m+1; i++)
            {
                for(j=0; j<=n+1; j++)
                    printf("%d",vis[i][j]);
                printf("\n");
            }
    */
            for(count=0,i=1; i<=m; i++)
                for(j=1; j<=n; j++)
                    if(a[i][j] && !vis[i][j])
                    {
                        count++; 
                        dfs(i,j);
                    }
            
            printf("%d\n",count);
        
        }
        return 0;
    }
  • 相关阅读:
    Array的个人总结
    sublime3 的安装
    小白 安装和配置Tomcat 局域网内访问网页
    安装Axure7.0,完整教程,有验证码和汉化包
    安装 sublime2 (包括插件)
    ffmpeg
    ExecutorService
    artDialog
    交互
    刚查了,Z3795不支持EPT,即WP8开发必须的SLAT,看来只能作为简单的WINDOWS备机了
  • 原文地址:https://www.cnblogs.com/scau20110726/p/2737978.html
Copyright © 2020-2023  润新知