news 2026/4/17 2:00:45

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩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;//找不到 } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:58:07

Java毕设选题推荐:基于springboot的闲一品闲置品交易平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 11:59:10

牛顿插值(测试)

N(x) f[x0] f[x0,x1](x-x0) f[x0,x1,x2](x-x0)(x-x1) ... f[x0,...,xn](x-x0)...(x-x_{n-1}) 其中 f[x0,...,xk] 是 k 阶差商。 差商表可视化示例: 假设&#xff1a;对于点 (1,1), (2,4), (3,9)&#xff0c;(4,16) 差商表:索引 x yf(x) 一阶差商 二阶差商 三阶…

作者头像 李华
网站建设 2026/4/16 12:08:27

【计算机毕业设计案例】基于springboot的社区协作与资源共享系统基于springboot+vue的社区资源共享系统设计与实现(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 11:16:04

19.Spring 框架中的 IOC

Spring 框架中的 IOC&#xff1f;Spring 中的 org.springframework.beans 包和 org.springframework.context 包构成了 Spring 框架 IoC 容器的基础。BeanFactory 接口提供了一个先进的配置机制&#xff0c;使得任何类型的对象的配置成为可能。ApplicationContex 接口对 BeanFa…

作者头像 李华
网站建设 2026/4/16 16:08:37

Java毕设项目推荐-基于Java+SpringBoot的闲置用品交易平台基于springboot的闲一品闲置品交易平台【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 11:09:56

算法围猎下的App渠道归因如何去伪存真?

为什么你的精准广告&#xff0c;总能避开所有真客户&#xff1f; 这是一个让无数营销人深感挫败的“数字化悖论”。近日&#xff0c;行业资深观察者“老泡”的一篇深度述评引发了移动营销圈的强烈共鸣。文章指出&#xff0c;当品牌方沉溺于由算法编织的完美投流报表——百分百匹…

作者头像 李华