动态规划题目特点
1、计数
- 有多少种方式走到右下角
- 有多少种方法选出k个数使得和是sum
2、求最大值最小值
- 从左上角走到右下角路径的最大数字和
- 最长上升子序列长度
3、求存在性
- 取石子游戏,先手是否必胜
- 能不能选出k个数使得和是sum
组成部分
一:确定状态
(1)最后一步
(2)确定子问题
二:转移方程
三:初始条件和边界情况
四:计算顺序
例题一:
有2元,5元,7元硬币,求组合成27元硬币所用最少硬币数。
一:确定状态
找出最后一步:最优策略是K枚硬币a1,a2……ak加起来是27
最后一枚为ak,则前面的面值加起来是27-ak
子问题:最少用多少枚硬币可以拼出27-ak
二:转移方程
设状态f[x]=最少用多少枚硬币拼出x
对于任何x
f[x]=min{f[x-2]+1,f[x-5]+1,f[x-7]+1}
三:初始条件和边界情况
- 初始条件