很多复杂的问题需要使用动态规划,使用动态规划和分治法不同之处在于,分治将大问题分解为不重叠的小问题,而动态规划应用于子问题重叠的情况。在处理复杂问题时要时刻有这根筋,如果只是简单的遍历这样算法的复杂度就变为了指数级别。
动态规划问题的步骤:
1、刻画最优解
2、递归定义最优解
3、采用自底向上的方法来计算最优解。(如果递归,同样是指数级别)
4、利用计算信息构造最优解。
辅助空间一般是一张表。
一些用到动态规划的例子:钢条分割、矩阵链相乘、最大公共子序列、最优二叉搜索树等。
具体就不说了,要学会写伪代码~~~~(>_<)~~~~