• Hdu_1241 Oil Deposits


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241

    /*
    遍历所有点,找到未被标记的‘@’,num++,标记该节点,对该点进行dfs,
    找到相邻的'@',标记该节点,再次进入dfs,
    直到各个方向都不存在相邻未被标记的'@'后退出,继续进行遍历
    */
    
    #include<iostream>
    using namespace std;
    
    int m,n;
    char grid[101][101];
    int visited[101][101];
    int dir[8][2]={{1,0},{1,1},{1,-1},{-1,0},{0,1},{0,-1},{-1,-1},{-1,1}};
    int num;                 //num为deposit的数量
    int fr,fc;
    
    void dfs(int r,int c){
    
        for(int i=0;i<8;i++)
        {
            fr=r+dir[i][0];
            fc=c+dir[i][1];
            if(fr>=m||fr<0)
                continue;
            if(fc>=n||fc<0)
                continue;
            if(grid[fr][fc]=='*')
                continue;
            if(visited[fr][fc])
                continue;
            visited[fr][fc]=1;
            dfs(fr,fc);
        }
    
    }
    
    int main (){
    
        while(cin>>m>>n)
        {
            if(!m)
                break;
    
            for(int i=0;i<m;i++)
                cin>>grid[i];
    
            num=0;
            memset(visited,0,sizeof(visited));
    
            for(int i=0;i<m;i++)
            {
                for(int j=0;grid[i][j]!='';j++)
                {
                    if(grid[i][j]=='*')
                        continue;
                    if(visited[i][j])
                        continue;
                    num++;
                    visited[i][j]=1;
                    dfs(i,j);
                }
            }
            cout<<num<<endl;
        }
        return 0;
    }
  • 相关阅读:
    79. 滑动窗口的最大值
    78. 左旋转字符串
    77. 翻转单词顺序
    76. 和为S的连续正数序列
    75. 和为S的两个数字
    innodb 锁机制
    MVCC
    linux查看状态命令
    design pattern 资料整理
    mysql资料汇总
  • 原文地址:https://www.cnblogs.com/neverchanje/p/3536387.html
Copyright © 2020-2023  润新知