zoukankan      html  css  js  c++  java
  • HDU 1241 Oil Deposits (DFS)

    题目链接:Oil Deposits


    解析:问有多少个“@”块。当中每一个块内的各个“@”至少通过八个方向之中的一个相邻。

    直接从“@”的地方開始向相邻八个方向搜索,每搜到一个格子。就将它替换成“.”,一次搜索就会搜索完一个块,记录搜索的次数为答案。



    AC代码:

    #include <cstdio>
    #include <cstring>
    #include <queue>
    using namespace std;
    
    char mz[110][110];
    const int dir[8][2] = {0, 1, 1, 0, 0, -1, -1, 0, 1, 1, -1, -1, 1, -1, -1, 1};    //八个方向
    int n, m;
    
    void dfs(int sx, int sy){
        mz[sx][sy] = '.';    //搜到的位置替换成‘.’
        for(int i=0; i<8; i++){
            int x = sx + dir[i][0];
            int y = sy + dir[i][1];
            if(x >= 0 && x < n && y >= 0 && y < m && mz[x][y] == '@')
                dfs(x, y);
        }
        return ;
    }
    
    int main(){
    //    freopen("in.txt", "r", stdin);
        while(scanf("%d%d", &n, &m) == 2 && n){
            for(int i=0; i<n; i++){
                scanf("%s", mz[i]);
            }
    
            int ans = 0;
            for(int i=0; i<n; i++)
                for(int j=0; j<m; j++){
                    if(mz[i][j] == '@'){
                        dfs(i, j);
                        ans ++;      //记录搜索次数
                    }
                }
            printf("%d
    ", ans);
        }
        return 0;
    }
    




  • 相关阅读:
    AD读取Excel新建客户邮箱的测试环境部署有感
    云端转发邮箱
    AD活动目录操作软件设计节选
    14)
    13)
    行级,块级,空
    12)
    11)
    10)
    9)
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7133107.html
Copyright © 2011-2022 走看看