This commit is contained in:
krahets
2023-08-20 13:37:08 +08:00
parent 2e27ad1680
commit 44a8568356
32 changed files with 140 additions and 130 deletions

View File

@@ -54,7 +54,7 @@ $$
根据以上分析,我们接下来按顺序实现暴力搜索、记忆化搜索、动态规划解法。
### 方法一:暴力搜索
### 1.   方法一:暴力搜索
搜索代码包含以下要素:
@@ -275,7 +275,7 @@ $$
<p align="center"> 图0-1 背包的暴力搜索递归树 </p>
### 方法二:记忆化搜索
### 2. &nbsp; 方法二:记忆化搜索
为了保证重叠子问题只被计算一次,我们借助记忆列表 `mem` 来记录子问题的解,其中 `mem[i][c]` 对应 $dp[i, c]$ 。
@@ -541,7 +541,7 @@ $$
<p align="center"> 图0-1 背包的记忆化搜索递归树 </p>
### 方法三:动态规划
### 3. &nbsp; 方法三:动态规划
动态规划实质上就是在状态转移中填充 $dp$ 表的过程,代码如下所示。
@@ -824,7 +824,7 @@ $$
<p align="center"> 图0-1 背包的动态规划过程 </p>
### 状态压缩
### 4. &nbsp; 状态压缩
由于每个状态都只与其上一行的状态有关,因此我们可以使用两个数组滚动前进,将空间复杂度从 $O(n^2)$ 将低至 $O(n)$ 。