This commit is contained in:
krahets
2023-07-16 04:18:52 +08:00
parent c342ba3ced
commit edcd1e5c10
21 changed files with 475 additions and 67 deletions

View File

@@ -2,7 +2,7 @@
comments: true
---
# 13.4.   0-1 背包问题
# 14.4.   0-1 背包问题
背包问题是一个非常好的动态规划入门题目,是动态规划中最常见的问题形式。其具有很多变种,例如 0-1 背包问题、完全背包问题、多重背包问题等。
@@ -55,7 +55,7 @@ $$
完成以上三步后,我们可以直接实现从底至顶的动态规划解法。而为了展示本题包含的重叠子问题,本文也同时给出从顶至底的暴力搜索和记忆化搜索解法。
## 13.4.1.   方法一:暴力搜索
## 14.4.1.   方法一:暴力搜索
搜索代码包含以下要素:
@@ -194,7 +194,7 @@ $$
<p align="center"> Fig. 0-1 背包的暴力搜索递归树 </p>
## 13.4.2. &nbsp; 方法二:记忆化搜索
## 14.4.2. &nbsp; 方法二:记忆化搜索
为了防止重复求解重叠子问题,我们借助一个记忆列表 `mem` 来记录子问题的解,其中 `mem[i][c]` 对应解 $dp[i, c]$ 。
@@ -348,7 +348,7 @@ $$
<p align="center"> Fig. 0-1 背包的记忆化搜索递归树 </p>
## 13.4.3. &nbsp; 方法三:动态规划
## 14.4.3. &nbsp; 方法三:动态规划
动态规划解法本质上就是在状态转移中填充 $dp$ 表的过程,代码如下所示。