动态规划
作者:互联网
动态规划
动态规划组成部分一:确定状态
- 简单的说,解动态规划的时候需要开一个数组,数组的每个元素f[i]或者f[i][j]代表什么
- 确定状态需要两个意识:
- 最后一步:即最优策略的最后一个决策
- 子问题
动态规划组成部分二: 转移方程
- 设状态f
动态规划组成部分三: 初始条件和边界情况
- 初始条件是用转移方程算不出来,需要手工定义
- 边界情况就是不让值越界
动态规划组成部分四: 计算顺序
- 一般按从小到大算
实例
硬币
一:确定状态
最后一步
子问题
递归解法
二:转移方程
三:初始条件和边界情况
四:计算顺序
代码
其中if i >= A[j] 是保证不出现负数
小结
- 求最值型动态规划
- 动态规划组成部分:
- 1.确定状态
- 最后一步(最优策略中使用的最后一枚硬币 a k a_k ak)
- 化成子问题(最少的硬币拼出更小的面值 27 - a k a_k ak)
- 2.转移方程
- f[x] = min{f[x - 2] +1, f[x - 5] +1, f[x - 7] + 1}
- 3.初始条件和边界条件
- f[0] = 0,如果不能拼出Y , f[Y] = 正无穷
- 4.计算顺序
- f[0], f[1], f[2], …
- 1.确定状态
Unique Paths
题目
一:确定状态
二:子问题和转移方程
三:初始条件和边界情况
四:计算顺序
确定这样的顺序是因为当前的值需要上面和左边的值
代码
Jump Game
题目
一:确定状态
二:子问题和转移方程
三:初始条件和边界情况
四:计算顺序
代码
总结
标签:方程,顺序,边界,初始条件,动态,规划 来源: https://blog.csdn.net/weixin_45337615/article/details/114585300