• hdu 1241 Oil Deposits (一次dfs搞定有某有)


     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm>
     5 using namespace std;
     6 char map[105][105];
     7 
     8 int dir[8][2]={0, 1, 1, 0, -1, 0, 0, -1, 1, 1, 1, -1, -1, 1, -1, -1};
     9 int n, m;
    10 int ans;
    11 
    12 bool judge(int x, int y){
    13       if(x<1 || x>n || y<1 || y>m) return false;
    14       return true;
    15 }
    16 
    17 void dfs(int x, int y, bool flag){
    18 
    19    if(map[x][y]=='@'){
    20           map[x][y]='*';
    21           ++ans;
    22        for(int i=0; i<8; ++i){
    23              int xx=x+dir[i][0], yy=y+dir[i][1];
    24              if(judge(xx, yy) && map[xx][yy]=='@'){
    25                   --ans;
    26              dfs(xx, yy, 1);
    27           }
    28        }
    29        if(flag)  return;//flag==1表明没有将油田搜索完毕
    30    }
    31    
    32    for(int i=0; i<8; ++i){
    33           int xx=x+dir[i][0], yy=y+dir[i][1];  
    34             if(judge(xx, yy) && map[xx][yy]!='#'){
    35               if(map[xx][yy]=='*')
    36                  map[xx][yy]='#';
    37               dfs(xx, yy, 0);
    38           }
    39    }
    40 }
    41 
    42 int main(){
    43     while(cin>>n>>m && (n||m)){
    44         for(int i=1; i<=n; ++i)
    45            cin>>(map[i]+1);
    46         ans=0;
    47         dfs(1, 1, 0);
    48         cout<<ans<<endl;
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    假期学习总结2-14
    假期学习总结2-13
    假期总结2-12
    假期总结2-11
    读人月神话
    冲刺第五天 11.29 THU
    冲刺第四天 11.28 WED
    冲刺第三天 11.27 TUE
    冲刺第二天 11.26 MON
    冲刺第一天 11.23 FRI
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/3911470.html
Copyright © 2020-2023  润新知