Oil Deposts(dfs)

思路

题意就是有一大片地方,让你去找里面有多少片油田(八个方向),我们只需要遍历地图,当找到'@'的时候进行dfs,把搜索到的'@'都变成'*'就好了,然后用一个变量进行计数。


AC代码:

#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 105;
char MAP[MAXN][MAXN];
int dir[8][2] = {1,0, 0,1, -1,0, 0,-1, 1,1, -1,1, -1,-1, 1,-1};   // 因为有8个方向
int n,m;
int sum;

void dfs(int x,int y){
  MAP[x][y] = '*';                 // 把搜索到的油田标记成空地
  for(int i=0;i<8;i++){            // 8个方向搜索
    int X = x + dir[i][0];
    int Y = y + dir[i][1];
    if(X >= 0 && Y >= 0 && X < n && Y < m && MAP[X][Y] == '@'){
      dfs(X,Y);
    }
  }
  return ;
}

int main()
{
    while(~scanf("%d%d",&n,&m)){
      if(n==0&&m==0) break;
      memset(MAP,0,sizeof(MAP));
      for(int i=0;i<n;i++){           // 给地图赋值
        scanf("%s",MAP[i]);
      }
      sum = 0;                        // sum记得清零
      for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
          if(MAP[i][j] == '@'){       // 遍历到油田时进行搜索
            dfs(i,j);
            sum++;                    // 计数
          }
        }
      }
      printf("%d\n",sum);
    }
    return 0;
}
/***
   [来源] UVa 572
   [题目] Oil Deposits
   [大意]
      经典的DFS题,这个就是求有多少片油田,只要8个方向连在一起的就是一片
      所以只需要遍历地图,当找到一个油田时进行搜索,把搜索到的油田都变成
      空地就好了。详细看代码注释。
   [输入]
      1 1
      *
      3 5
      *@*@*
      **@**
      *@*@*
      1 8
      @@****@*
      5 5 
      ****@
      *@@*@
      *@**@
      @@@*@
      @@**@
      0 0
   [输出] 
      0
      1
      2
      2
*/


全部评论

相关推荐

头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3&nbsp;投递、测评3.12&nbsp;笔试3.18&nbsp;一面3.25&nbsp;二面4.13&nbsp;ai面(hr面)4.14&nbsp;英语测评4.23&nbsp;offer(已拒)腾讯:2.6&nbsp;测评2.28&nbsp;wxg一面3.5&nbsp;wxg二面(挂)3.11&nbsp;teg一面3.21&nbsp;teg二面(取消)3.31&nbsp;teg一面4.10&nbsp;teg二面(挂)4.21&nbsp;wxg一面4.24&nbsp;wxg二面(挂)字节:1.28&nbsp;aml约面(取消)3.17&nbsp;火山一面(挂)4.8&nbsp;aml一面(挂)4.20&nbsp;抖音data一面(挂)阿里:3.23&nbsp;投递、测评3.28&nbsp;笔试3.31&nbsp;淘天一面4.8&nbsp;钉钉一面4.9&nbsp;淘天二面4.10&nbsp;阿里控股一面4.12&nbsp;钉钉二面(取消)4.15&nbsp;淘天hr面4.16&nbsp;淘天offer(已接)4.21&nbsp;高德一面(取消)4.22&nbsp;淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm&nbsp;api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
嵌入式的小白:不错啊,淘天也是挺好的,恭喜
我的求职进度条
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务