• 题目1460:Oil Deposit(递归遍历图)


    题目链接:http://ac.jobdu.com/problem.php?pid=1460

    详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus

    参考代码:

    //
    //  1460 Oil Deposit.cpp
    //  Jobdu
    //
    //  Created by PengFei_Zheng on 23/04/2017.
    //  Copyright © 2017 PengFei_Zheng. All rights reserved.
    //
     
    #include <stdio.h>
    #include <iostream>
    #include <algorithm>
    #include <string.h>
    #include <cmath>
    #define MAX_SIZE 101
     
    using namespace std;
     
    char plot[MAX_SIZE][MAX_SIZE];
    bool visited[MAX_SIZE][MAX_SIZE];
    int change[2][8]={{-1,-1,-1,0,0,1,1,1},{-1,0,1,-1,1,-1,0,1}};
     
    int n, m;
     
    void DFS(int x, int y){
        for(int i = 0 ; i < 8 ; i++){
            int nx = x + change[0][i];
            int ny = y + change[1][i];
            if(nx<0 || nx>=n || ny<0 || ny>=m) continue;
            if(plot[nx][ny]=='*') continue;
            if(visited[nx][ny]==true) continue;
            visited[nx][ny]=true;
            DFS(nx,ny);
        }
        return;
    }
    int main(){
        //    for(int i = 0 ; i < 8 ; i ++){
        //        cout<<"change[0]["<<i<<"] = "<<change[0][i]<<" ";
        //        cout<<"change[1]["<<i<<"] = "<<change[1][i]<<endl;
        //    }
        while(scanf("%d%d",&n,&m)!=EOF){
            if(0==n && 0==m) break;
             
            for(int i = 0 ; i < n ; i++){
                scanf("%s",plot[i]);
            }
             
            for(int i = 0; i < n ; i ++){
                for(int j = 0 ; j < m ; j++){
                    visited[i][j]=false;
                }
            }
            int ans = 0;
            for(int i = 0 ; i < n ; i++){
                for(int j = 0 ; j < m ; j++){
                    if(visited[i][j]==true) continue;
                    if(plot[i][j]=='*') continue;
                    DFS(i,j);
                    ans++;
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    /**************************************************************
        Problem: 1460
        User: zpfbuaa
        Language: C++
        Result: Accepted
        Time:10 ms
        Memory:1540 kb
    ****************************************************************/
  • 相关阅读:
    thinkphp 前台输出
    php的四种定界符
    面试总结
    Git分布式版本控制工具
    Apache Dubbo
    Mybatis03
    Mybatis02
    Mybaitis01
    linux下如何安装webbench
    SpringUtil
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6753231.html
Copyright © 2020-2023  润新知