动态规划--个人笔记
动态规划的解题步骤
1 定义状态。
2 寻找状态转移方程。
3 前两步联立,计算出所需要的值。
根据数学归纳法的三步走,我们试着证明一下第一种状态转移方程是正确的,也就是自上而下的状态转移方式。
第一步,我们已知在这种状态转移方式中,第一个阶段中的所有 dp 值都可以轻松获得,也就是可以很轻松的初始化 dp[1][1] 的值,应该等于 val[1][1] 的值。
第二步,我们假设如果第 i-1 阶段中的所有状态值,我们都正确的得到了。也就是正确的得到了从起始点到 i-1 层中每个点的路径最大和值。那根据状态转移方程:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j + 1]) + val[i][j] 来说,就可以正确的计算得到第 i 个阶段中的所有状态值。
第三步,两步联立,就可得出结论,所有阶段中的状态值计算均正确。那么,从起始点到底边的路径最大和值,就在最后一个阶段的若干个状态值中。
以上就是我们使用数学归纳法,证明数字三角形问题的第一种状态转移方程正确性的过程。这个过程呢,比较简单,那是因为数字三角形问题本身就不难。当面对更难一些的动态规划问题的时候,将这种证明方法,加入到你学习动态规划算法的过程中,你会收获奇效的。
![](https://img2022.cnblogs.com/blog/1326816/202204/1326816-20220419142934691-1741809400.png)