我刚接触动态规划就是背包九讲问题,当时我知道了有DP这种算法,后来也了解接触了区间DP,做题的时候也做了许多DP的题,但是并没有真正的系统学习一下,这次一遍看算法竞赛的动态规划章节一遍巩固一下基础知识。
动态规划:我的理解它就像是递推,把大问题分解成许多性质相同的小问题,前面子问题解决的结果可以被后面的问题所调用。一般一个问题具有重复子问题和最优子结构,都大几率是DP。
通过对背包问题的学习,我理解了DP就是不断决策选择的问题,背包问题就是有限制的选择,后来做题,发现让求最大值和最小值或者最优方案数的话大几率就是DP和贪心。
基础的DP题就是硬币问题,背包问题,最长公共子序列,最长上升子序列,我的博客里也有相关的介绍。
动态规划的重点就是找到状态表示和状态转移方程,这个也是必须需要大量做题才能积累的。
下一篇文章讲讲最长公共子序列,最长上升子序列的一种特殊转换。