一、动态规划
(一)动态规划是由子问题逐步推导出最终问题解的一种解题思想。动态规划一般由以下几部分组成:
1. 确定状态
2. 状态转移方程
3. 初始值和边界条件
4. 计算顺序,f[0]—>f[n] or f[n-1]
(二)动态规划常见的有以下几种类型:
1.序列型
2.坐标型
3.划分型和区间型
4.博弈型
5.背包型
1)其中背包类型又可划分为:0-1背包、完全背包、组合背包和分组背包。在0-1背包问题中,每个元素最多被选取一次;在完全背包问题中,每个元素可以被重复选择;在组合背包问题中,背包中物品的顺序需要被考虑;在分组背包中,存在不止一个背包,需要对每个背包进行遍历。
2)对于序列型和坐标型问题,需要考虑加入序列的最后一个值。在序列型问题中,通常在有些题目中需要设置状态维,如题目、入室抢劫、粉刷房子、四类股票问题。对于划分型题目,需要考虑最后一段的长度(j~i),比如题目划分回文串和题目解码。
3)对于博弈型题目,需要注意的是,在确定状态时是从前往后的。如必胜态和必败态,每一步都假设当前选手是先手,若下一步无论如何都是必胜态,则当前的选手必败,否则必胜。
下面将对上述类型的动态规划,做详细的总结,以便此后的学习和职业发展。
LeetCode练题笔记
最新推荐文章于 2025-04-18 15:40:02 发布