一、什么是动态规划
通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推的方式解决。
哪些问题可以使用动态规划?
1、具有最优子结构:问题的最优解所包含的子结构的解也是最优的
2、具有无后效性:未来与过去无关,只与当前状态有关。
二、三角形最小路径和
三、思路分析
1、规整数据
将数组规整一下,将多余的空格删除,使之变成我们熟悉且好操作的常规形状。
[
[2],
[3, 4],
[6, 5, 7],
[4, 1, 8, 3]
]
变成这样后方便我们观察规律也比较好写算法,如果有题目要求输出题目中那样的,再添加空格字符串进行调整即可。
2、分析数据
2.1、只有两行数据
当只有两行数据时,只需要分别相加再求出最小值即可。
[
[2],
[3, 4]
]
2+3=5 2+4=6 , 再取出相加和后的最小值,即为最小路径和。
2.2、有三行数据
[
[2],
[3, 4],
[6, 5, 7]
]
有三行数据时,路径选择就多了,一共有 4 种情况。
2 + 3 + 6 = 11 &n