zoukankan      html  css  js  c++  java
  • UVa

    UVa - 572 Oil Deposits ( DFS求连通块 )

    水题
    数据结构 : 深度优先搜索 DFS

    题意

    输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在的格子相邻(横、竖或者对角线方向),就说它们属于同一个八连块。

    [ UVa - 572 (VJ) ]

    思路

    每次 通过DFS找到第一个”@”, 在它的八个方向寻找”@”并递归实现DFS 每次找到”@”都将其改为”*”来表示这个位置已经被踩过(或者新建一个等大小的二维数组来记录该位置是否被踩过)

    最终DFS次数为连通块的个数

    AC代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    using namespace std;
    
    #define maxn 100+10
    char oil[maxn][maxn];
    int N,M ;
    void DFS( int x , int y )
    {
        oil[x][y] = '*';
        for( int dx = -1 ; dx <= 1 ; dx++ )
        {
            for( int dy = -1 ; dy <= 1 ; dy++ )
            {
                int nx = x + dx , ny = y + dy;
                if( nx >= 0 && nx < N && ny >= 0 && ny < M && oil[nx][ny] == '@' )
                    DFS(nx,ny);
            }
        }
        return ;
    }
    
    void solve()
    {
         int o = 0;
            for( int i = 0 ; i < N ; i++ )
            {
                for( int j = 0 ; j < M ; j++ )
                {
                    if( oil[i][j] == '@' )
                    {
                        DFS(i,j);
                        o++;
                    }
                }
            }
            printf("%d
    ",o);
    }
    
    int main()
    {
        while( scanf("%d%d",&N,&M) == 2 && N )
        {
            getchar();
            for( int i = 0 ; i < N ; i++ )
            {
                for( int j = 0 ; j < M ; j++ )
                    scanf("%c",&oil[i][j]);
                getchar();
            }
    //        for( int i = 0 ; i < N ; i++ )
    //        {
    //            for( int j = 0 ; j < M ; j++ )
    //                printf("%c",oil[i][j]);
    //            printf("
    ");
    //        }
           solve();
        }
        return 0;
    }
  • 相关阅读:
    1.tomcat部署项目的几种方式和weblogic部署方式及一点通讯
    C程序第二章节:算法
    java 代码第一天练习
    git生成公钥私钥
    sourceTree操作
    gradle插件安装
    gradle环境搭建
    bootstrap
    20170223
    大企业招聘真的是这样进行的吗?
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740660.html
Copyright © 2011-2022 走看看