当前位置: 首页 > news >正文

【剑斩OFFER】算法的暴力美学——力扣 675 题:为高尔夫比赛砍树

一、题目描述

二、算法原理

思路:BFS 算法

1)找到图中不是0,1值,用个二维数组来存储他们的下标

2)排序,根据下标对应的值的大小升序

3)升序:1 -> 2 -> 3......... 的本质就是 1 —> 2 的最短路径,2——> 3 的最短路径等,所以剩下的

BFS 算法的老套路;

三、代码实现

class Solution { int dx[4] = {0,0,-1,1}; int dy[4] = {1,-1,0,0}; typedef pair<int,int> PII; int wight; int hight; public: int cutOffTree(vector<vector<int>>& ft) { wight = ft.size(); hight = ft[0].size(); vector<PII> index;//存储树的坐标 for(int i = 0; i < wight; i++) { for(int j = 0; j < hight; j++) { if(ft[i][j] > 1) index.push_back({i,j}); } } sort(index.begin(),index.end(),[&](PII x,PII y){//根据树的高度升序 return ft[x.first][x.second] < ft[y.first][y.second]; }); int bx = 0,by = 0;//起始点值 int total = 0; for(auto [ex,ey] : index)//终点值 { int sep = BFS(ft,bx,by,ex,ey);//查找目的值的步数 if(sep < 0) return -1;//找不到 total += sep; bx = ex;//更新起点值 by = ey; } return total; } int BFS(vector<vector<int>>& ft,int bx,int by,int ex,int ey) { //BFS 算法 if(bx == ex & by == ey) return 0;//有可能遍历到起始值 queue<PII> que; que.push({bx,by});//起点值 int ret = 0; bool vis[51][51];//标记是否遍历过入 queue 的下标 memset(vis,false,sizeof(vis));//清空 vis[bx][by] = true;//起点值已经遍历过了 while(que.size()) { int size = que.size(); ret++; while(size--)// 层数 { auto [x,y] = que.front(); que.pop(); for(int i = 0; i < 4; i++)// 上下左右遍历 { int a = x + dx[i]; int b = y + dy[i]; if(a >= 0 && b >= 0 && a < wight && b < hight && ft[a][b] && vis[a][b] == false) { if(a == ex && b == ey) { return ret;// 找到目标值 } que.push({a,b});//更新 vis[a][b] = true; } } } } return -1;//找不到 } };
http://www.jsqmd.com/news/285775/

相关文章:

  • 【课程设计/毕业设计】基于SpringBoot的人力资源管理系统基于springboot的寿险公司人力资源管理系统【附源码、数据库、万字文档】
  • 【毕业设计】基于springboot的社区协作与资源共享系统(源码+文档+远程调试,全bao定制等)
  • Java毕设选题推荐:基于SpringBoot的社区互助系统基于springboot的社区协作与资源共享系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 想在 Java 八股文面试中脱颖而出?这1000 道互联网大厂 工程师面试题必不可少!!
  • PolarDB-X 企业版分布式集群部署文档
  • 【毕业设计】基于springboot的寿险公司人力资源管理系统(源码+文档+远程调试,全bao定制等)
  • 【课程设计/毕业设计】基于SpringBoot的闲置物品交易系统基于springboot的闲一品闲置品交易平台【附源码、数据库、万字文档】
  • 【2026亲测有效】10款免费降AI工具全解析,轻松将AIGC率降至10%以下
  • 如何利用天淳SCRM系统实现客户全生命周期高效管理?
  • 【课程设计/毕业设计】基于Springboot+Vue的社区资源共享系统设计与实现基于springboot的社区协作与资源共享系统【附源码、数据库、万字文档】
  • 担心AIGC率过高?10个降AI工具+免费技巧实现10%低AI率(详细攻略)
  • 道路抛洒物数据集4521张VOC+YOLO格式
  • TCP 流通信中的 EOFException 与 JSON 半包障碍解析
  • 消费kafka数据
  • 亲测有效:10个免费降AI工具+完整操作流程,成功将AIGC风险降至10%
  • 吉时利6517B 静电计/高阻表: 高精度电学测量的专业选择
  • 2026毕业生必备:用这10款降AI工具和免费降AI方法,高效降低论文AI率至10%
  • KEYSIGHT是德 N1912A功率计:宽带多通道功率测量的标杆之选
  • Java毕设选题推荐:基于springboot的闲一品闲置品交易平台【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 搜维尔科技:【工业前沿——Tesollo】机器人工匠打造“点石成金”机械手
  • 向kafka写入数据
  • 21.BeanFactory 和 ApplicationContext 有什么区别
  • 免费且高效:10个降AI工具深度测评+降AI方法使用方案,AI率轻松降到10%
  • 【计算机毕业设计案例】基于SpringBoot的野生动物园财务与票务一体化平台基于springboot的西安秦岭野生动物园智能化管理系统(程序+文档+讲解+定制)
  • 【计算机毕业设计案例】基于springboot的闲一品闲置品交易平台于Java+SpringBoot的闲置用品交易平台(程序+文档+讲解+定制)
  • 牛顿插值(测试)
  • 【计算机毕业设计案例】基于springboot的社区协作与资源共享系统基于springboot+vue的社区资源共享系统设计与实现(程序+文档+讲解+定制)
  • 计算机Java毕设实战-基于springboot的闲一品闲置品交易平台基于SpringBoot的闲置物品交易系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • A.每日一题——3507. 移除最小数对使数组有序 I
  • 计算机Java毕设实战-基于springboot的社区协作与资源共享系统社区闲置资源交易与共享系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】