动态规划三要素:
重叠子问题、最优子结构、状态转移方程
子系列问题
注意「子序列」和「子串」这两个名词的区别,子串一定是连续的,而子序列不一定是连续的。下面先来设计动态规划算法解决这个问题。
解决两个字符串的动态规划问题,一般都是用两个指针 i, j 分别指向两个字符串的最后,然后一步步往前移动,缩小问题的规模。
背包问题
解决这个问题没有什么排序之类巧妙的方法,只能穷举所有可能
dp[i][w]= max{val[i-1] + dp[i-1][w - wt[i-1]], dp[i][w]}