Add subtitles to docs

This commit is contained in:
krahets
2023-07-21 21:54:51 +08:00
parent 1a55dbdf2e
commit ca5bde2b6c
16 changed files with 109 additions and 35 deletions

View File

@ -61,6 +61,8 @@ $$
观察状态转移方程,解 $dp[i, j]$ 依赖左方、上方、左上方的解,因此通过两层循环正序遍历整个 $dp$ 表即可。
### 代码实现
=== "Java"
```java title="edit_distance.java"
@ -174,6 +176,8 @@ $$
=== "<15>"
![edit_distance_dp_step15](edit_distance_problem.assets/edit_distance_dp_step15.png)
### 状态压缩
下面考虑状态压缩,将 $dp$ 表的第一维删除。由于 $dp[i,j]$ 是由上方 $dp[i-1, j]$ 、左方 $dp[i, j-1]$ 、左上方状态 $dp[i-1, j-1]$ 转移而来,而正序遍历会丢失左上方 $dp[i-1, j-1]$ ,倒序遍历无法提前构建 $dp[i, j-1]$ ,因此两种遍历顺序都不可取。
为解决此问题,我们可以使用一个变量 `leftup` 来暂存左上方的解 $dp[i-1, j-1]$ ,这样便只用考虑左方和上方的解,与完全背包问题的情况相同,可使用正序遍历。