【力扣】三角形最小路径和
目录
1|0题目
给定一个三角形
triangle
,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标
i
,那么下一步可以移动到下一行的下标i
或i + 1
。
2|0例子
2|1示例 1:
2|2示例 2:
3|0前言
本题是动态规划的一道经典题目,最早出现在1994年的ioi比赛中
经过了20多年的时间,如今已经变成了动态规划的入门必做题
4|0思路
我们可以以下面的图来举例子
设置数据为一个二维数组(或者是一个容器)
放入[2],[3,4],[6,5,7],[4,1,8,3]四组数据
我们可以很简单的看出来——最短路径是2,3,5,1
如果把走到响应的点所得到的和(也就是所求值)定义为一个二维数组的话
我们可以得到一个4*4的二维数组(当然其中有一些是用不到了)
那可以把题目转化为求最底下行数组的值,并且比较大小得出最小值
我可以知晓除去第一列的值,其中随机一列的值只取决上一列与其相邻的值,因此我们可以设置递归函数,第a[i][j]的值只取决与原来数组本身的值加上a[i-1][j]与a[i-1][j-1]的最小值。
从底下迭代是一种方法
但是他会有一个问题,他会重复大量计算相同的数字
比如上面的例子:
第三行第一列以及第二列都需要知道第二行第一列的数字,所以第二行第一列的值会计算两遍
5|0思想
所以结果就是我从上向下迭代
下一行的数字只会取上一行的值,然而上一行的值都是计算好的
不需要重新计算也不存在重复以及浪费时间
有些相当于广度优先了
那么思想有了
就是代码实现了
6|0代码
6|1调用的函数
思想就是上面讲到的思想
需要注意的是第一行以及第一列与最后一列要单独考虑
6|2主函数
6|3所有代码
6|4力扣提交的代码
7|0运行结果
8|0小结
本期博客介绍了现在的动态规划的经典题目,并且提供了3种方法,
(入了个门,相当于?)
__EOF__

本文链接:https://www.cnblogs.com/mumuemhaha/p/17710166.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端