This commit is contained in:
krahets
2024-04-03 04:41:27 +08:00
parent 20f79f5f32
commit 8591529021
47 changed files with 136 additions and 135 deletions

View File

@ -4,7 +4,7 @@ comments: true
# 14.1   初探动态规划
动态规划 dynamic programming是一个重要的算法范式,它将一个问题分解为一系列更小的子问题,并通过存储子问题的解来避免重复计算,从而大幅提升时间效率。
<u>动态规划dynamic programming</u>是一个重要的算法范式,它将一个问题分解为一系列更小的子问题,并通过存储子问题的解来避免重复计算,从而大幅提升时间效率。
在本节中,我们从一个经典例题入手,先给出它的暴力回溯解法,观察其中包含的重叠子问题,再逐步导出更高效的动态规划解法。
@ -1396,9 +1396,9 @@ $$
根据以上内容,我们可以总结出动态规划的常用术语。
- 将数组 `dp` 称为$dp$ 表」$dp[i]$ 表示状态 $i$ 对应子问题的解。
- 将最小子问题对应的状态(第 $1$ 阶和第 $2$ 阶楼梯)称为初始状态
- 将递推公式 $dp[i] = dp[i-1] + dp[i-2]$ 称为状态转移方程
- 将数组 `dp` 称为<u>$dp$(表)</u>$dp[i]$ 表示状态 $i$ 对应子问题的解。
- 将最小子问题对应的状态(第 $1$ 阶和第 $2$ 阶楼梯)称为<u>初始状态</u>
- 将递推公式 $dp[i] = dp[i-1] + dp[i-2]$ 称为<u>状态转移方程</u>
## 14.1.4 &nbsp; 空间优化