动态规划
1、将已经算过的结果填在表格里面,然后记忆搜索这些结果,计算新的结果
一般求解最优解
概念:
1、 最优子结构:
问题的最优解由相关子问题的最优解组合而成
2、 边界:
问题的边界, 得到有限的结果, 初始值
3、 动态转移方程:
问题的每一个阶段和下一个阶段的关系
二、 动态规划题目特点
1、计数
-- 有多少种方式走到走到右下角
-- 有多少中方法选出K 个数使得和为 Sum
2、 求最大最小值
-- 从左上角走到右下角路径的最大数字和
-- 最长上升子序列长度
3、求存在性
-- 取石子游戏,先手是否必胜
-- 能不能选出K个数使得和是Sum
三、解题步骤
1、 确定状态
-- 最后一步(最优策略中的使用的最后一个抉择)
-- 化成子问题(转化为前面计算出来的子问题)
2、 转移方程
f[x] = min/max( f(x - n) , f(x - n - 1))类似的
3、 初始条件和边界情况
确定状态往下一步进行的时候的最小的计算的的数值, 以及确定一些边界(一维或者二维数组的边界区域)的情况, 以及一些可能溢出的结果
4、 计算顺序
是从f[0] - f[1] - --- f[x], 还是从 f[x] - f[x - 1] ----- f[0] 的这种计算顺序,依据状态转移方程确定