zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    连续最大和
    买苹果(找规律)
    最大的奇约数(找规律化简)
    暗黑字符串(递推)
    虚拟机无法通过桥接上网
    使用SQLServer 2012修改表
    使用SQL Server 2012创建表
    使用SQL Server 2012创建和删除数据库
    SQL Server 2012安装
    关系型数据模型
  • 原文地址:https://www.cnblogs.com/scau20110726/p/2737978.html
Copyright © 2011-2022 走看看