算法题每日一练---第41天:三角形最小路径和

简介: 给定一个三角形 triangle ,找出自顶向下的最小路径和。

2.png

一、问题描述


给定一个三角形 triangle ,找出自顶向下的最小路径和。


每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。


也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。


题目链接:三角形最小路径和


二、题目要求


样例

输入:triangle= [[2],[3,4],[6,5,7],[4,1,8,3]]
输出:11解释:如下面简图所示:2346574183自顶向下的最小路径和为11(即,2+3+5+1=11)。


考察

动态规划中等题型
建议用时15~30min


三、问题分析


上面的数字三角形不好观察,我给你对齐一下位置,如下:

[2] 
[3,4] 
[6,5,7] 
[4,1,8,3]

是不是和杨辉三角的存储结构差不多啊!接下来接着用用我们的三步走,老套路了:


第一步 含义搞懂:

这明显是二维数组的动态规划,那么就用dp[i][j]存储,那么这代表什么含义?

题目要求从上到下的最小花费,可以走下一行同一列、下一行多一列的方向。一开始我从上向下判断,突然发现多出很多条件,不能走的地方要单独考虑,后来发现从下向上走更加简单,于是屁颠屁颠改了算法。

下次,考虑问题我一定要反着想。

那么dp[i][j]就代表从最下面到当前位置,最小花费数目。


第二步 变量初始:

最后一行,没有下面了,所以这一行统统初始化。

for(j=0;j<n;j++)//只赋值最后一行的dp[n-1][j]=triangle[n-1][j];


第三步 规律归纳:

[2]            [2+3+5+1              ] 
[3,4]          [3+5+14+5+1        ] 
[6,5,7]        [6+15+17+3   ] 
[4,1,8,3]      [4183]

左侧是给定的数据,右侧是动态规划后每一步的结果,大家有没有发现什么规律。

比如倒数第二行的6,可以由下一行的4 1得到,选一个小的1
倒数第二行的5,可以由下一行的1 8得到,选一个小的1

上面也是相同的算法,规律出现:

dp[i][j]=triangle[i][j]+min(dp[i+1][j],dp[i+1][j+1]);    

三步走,打完收工!


四、编码实现


classSolution {
public:
intminimumTotal(vector<vector<int>>&triangle) {
longlonginti,j,n=triangle.size();//初始化变量longlongintdp[n+1][n+1];
for(j=0;j<n;j++)//动态规划变量初始dp[n-1][j]=triangle[n-1][j];
for(i=n-2;i>=0;i--)
        {
for(j=0;j<=i;j++)
            {
dp[i][j]=triangle[i][j]+min(dp[i+1][j],dp[i+1][j+1]);//规律归纳            }
        }
returndp[0][0];//输出结果    }
};


五、测试结果

25.png

相关文章
|
5月前
|
存储 SQL 算法
LeetCode题目113:多种算法实现 路径总和ll
LeetCode题目113:多种算法实现 路径总和ll
|
1月前
|
数据采集 监控 安全
厂区地图导航制作:GIS技术与路径导航算法融合
在智能化、数字化时代,GIS技术为厂区的运营管理带来了革命性变化。本文探讨了如何利用GIS技术,通过数据采集、地图绘制、路径规划、位置定位和信息查询等功能,打造高效、精准的智能厂区地图导航系统,提升企业的竞争力和管理水平。
49 0
厂区地图导航制作:GIS技术与路径导航算法融合
|
1月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
71 0
|
3月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
52 6
|
3月前
|
算法
基于多路径路由的全局感知网络流量分配优化算法matlab仿真
本文提出一种全局感知网络流量分配优化算法,针对现代网络中多路径路由的需求,旨在均衡分配流量、减轻拥塞并提升吞吐量。算法基于网络模型G(N, M),包含N节点与M连接,并考虑K种不同优先级的流量。通过迭代调整每种流量在各路径上的分配比例,依据带宽利用率um=Σ(xm,k * dk) / cm来优化网络性能,确保高优先级流量的有效传输同时最大化利用网络资源。算法设定收敛条件以避免陷入局部最优解。
|
3月前
|
数据采集 算法
基于PSO粒子群算法的三角形采集堆轨道优化matlab仿真
该程序利用PSO算法优化5个4*20矩阵中的模块采集轨迹,确保采集的物品数量及元素含量符合要求。在MATLAB2022a上运行,通过迭代寻优,选择最佳模块组合并优化轨道,使采集效率、路径长度及时间等综合指标最优。具体算法实现了粒子状态更新、需求量差值评估及轨迹优化等功能,最终输出最优轨迹及其相关性能指标。
|
3月前
|
算法 数据建模
平面中判断点在三角形内算法(重心法)
平面中判断点在三角形内算法(重心法)
45 0
|
3月前
|
算法 C++
空间中判断点在三角形内算法(方程法)
空间中判断点在三角形内算法(方程法)
58 0
|
3月前
|
算法
平面中判断点在三角形内算法(同向法)
平面中判断点在三角形内算法(同向法)
26 0
下一篇
无影云桌面