给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
第一行包含整数
接下来
输出一个整数,表示最大的路径数字和。
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
30
前置题目:0000
前置知识:无
本题知识:动态规划-线性DP
本题较为经典,可直接套用动态规划的解题思想
-
用delve来debug是真的好用
-
状态拆分自顶向下和自底向上都是可以的,但自底向上无需考虑边界问题,代码会更简洁
-
对输入数据的保存是从 0 开始还是从 1 开始 代码实现中如果有 i-1 的操作,最好从 1 开始,这样可以保证 i-1 是大于等于 0 的,不会数组越界
动态规划的时间复杂度 = 状态数量 x 转移计算量
本题的时间复杂度 = O(n^2) * O(1) = O(n^2)