1、基本思想:动态规划算法与分治法类似,基本思想是将待求解问题分解成若干个子问题。动态规划算法可以避免大量重复计算。动态规划算法可依据其递归式自底向上的方式进行计算,每个子问题只计算一次。
2、基本元素:最优子结构、重叠子问题。
3、动态规划的一般步骤:
问题结构分析、
递归关系建立、
自底向上计算、
最优方案追踪。
4、0-1背包问题(优化问题)
蛮力枚举:重复求解大量子问题。
带备忘录:记录子问题解,避免重复计算。(自顶向下+自底向上)
5、动态规划法和分治法的区别就在于动态规划法是重叠子问题,分治法是独立子问题。
6、最大子数组问题求解算法的时间复杂度比较
7、典型问题
最长公共子序列问题(连续)
最长公共子串问题(可不连续)
编辑距离问题
钢条切割问题