一.动态规划三个难点:
1.确定状态表示和状态转移方程(数学问题归纳)
2.如何从底向上遍历(控制for循环的i,j,k等遍历之间的关系-->基础代码能力)
3.确定初始状态(边界状态)的值(-->细节)
https://blog.csdn.net/baidu_28312631/article/details/47418773
能用动规解决的问题的特点
1) 问题具有最优子结构性质。如果问题的最优解所包含的 子问题的解也是最优的,我们就称该问题具有最优子结 构性质。
2)重叠子问题
3) 无后效性。当前的若干个状态值一旦确定,则此后过程的演变就只和这若干个状态的值有关,和之前是采取哪种手段或经过哪条路径演变到当前的这若干个状态,没有关系。从另一个角度来说已知阶段决策不能决定到现阶段的决策,现阶段的决策也只是根据已有的阶段的决策来决定。(也就是说已有阶段的决策只是为现阶段的决策提供信息)。这个也叫无后效性
二.动态规划题目分类:
https://www.cnblogs.com/aerer/p/9931022.html
三.例题:
1. 01背包 https://blog.csdn.net/qq_41765712/article/details/103994353
2. 最长回文串 https://blog.csdn.net/qq_41765712/article/details/104010105
3. 最小路径和 https://blog.csdn.net/qq_41765712/article/details/104039276
4. 最长公共子序列 https://blog.csdn.net/qq_41765712/article/details/104039333
5. 矩阵连乘 https://blog.csdn.net/qq_41765712/article/details/104084982