algorithm-dynamic-programming
dp深似海
“系统过去的历史只能通过现阶段的状态去影响系统的未来”——研究生算法课程老师对动态规划的描述,感觉挺不错的
分类参考了灵神的dp题单
记忆化搜索和递推是dp的两种实现方式
注意事项
如果动态转移方程不是按顺序的,那么需要注意不能直接赋值f[i+1][j] = f[i][j];
,因为这样可能会覆盖之前动态转移的结果(注释的是按顺序的动态转移写法)
相关题解:3276. 选择矩阵中单元格的最大得分
1 | f[i+1][j] = Math.max(f[i+1][j], f[i][j]); |
刷表法和查表法
在动态规划中,根据转移来源计算状态叫查表法(最常见),用当前状态更新其他状态叫刷表法。
- 2140. 解决智力问题(1709):刷表法和查表法两种写法
- 3524. 求出数组的 X 值 I:刷表法(刷表法:如果枚举 x,倒推 x=y⋅vmodk 中的 y,是困难的。但枚举 y,计算 y⋅vmodk,是简单的。也就是说,对于状态
f[i+1][x]
而言,其转移来源是谁不好计算,但从f[i][y]
转移到的目标状态f[i+1][y⋅vmodk]
是好计算的。)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BUGHERE の 博客!
评论