zoukankan      html  css  js  c++  java
  • 油田 (Oil Deposits UVA

    题目描述:

    原题:https://vjudge.net/problem/UVA-572

     题目思路:

    1.图的DFS遍历

    2.二重循环找到相邻的八个格子

    AC代码:

     1 #include <iostream>
     2 #include <cstring> 
     3 using namespace std;
     4 
     5 const int maxn = 105 ;
     6 char pic[maxn][maxn] ; 
     7 int tag[maxn][maxn] ; //已经遍历过的标志 
     8 int m, n;
     9 
    10 void dfs(int r,int c,int cnt)
    11 {
    12     if(r < 0 || r >= m || c < 0 || c >= n) return ;//排除出界的格子
    13     if(tag[r][c] > 0|| pic[r][c] != '@') return ; //已遍历过或不是@
    14     tag[r][c] = cnt ; //标记 
    15     for(int i = -1;i <= 1;i ++)
    16         for(int j = -1;j <= 1;j ++)
    17             if(i != 0 || j != 0) dfs(r+i,c+j,cnt);     
    18 }
    19 int main(int argc, char *argv[])
    20 {
    21     while(scanf("%d%d",&m,&n) == 2 && m && n)
    22     {
    23         for(int i = 0;i < m; i++) scanf("%s",pic[i]) ;
    24         memset(tag,0,sizeof(tag)) ;
    25         int cnt = 0; //连通块个数 
    26         for(int i = 0;i < m; i++)
    27             for(int j = 0;j < n;j++)
    28                 if(tag[i][j] == 0 && pic[i][j] == '@') dfs(i,j,++cnt) ;    
    29         cout << cnt << endl;
    30     }    
    31     return 0;
    32 }
  • 相关阅读:
    成立移动互联网公司???
    C++的子对象
    单链表 操作的18种算法
    再论虚函数
    多线程(三)
    多线程(二)
    多线程(一)
    存储过程的参数
    git
    多态(三)
  • 原文地址:https://www.cnblogs.com/secoding/p/9539494.html
Copyright © 2011-2022 走看看