25.11.4 动态规划dp
1.返回值和状态更新
| 写法 | 特征 | 举例 | 返回值是否有意义 |
|---|---|---|---|
| ① 记忆化递归(自顶向下) | 用返回值表示状态 | dfs(i) 返回从 i 出发的最大值 |
✅ 非常重要 |
| ② 递推(自底向上) | 不返回值,只更新表 | dp[i][j] = ... |
❌ 一般返回 void |
| a.把总问题分割成小问题更简单时,用方法一,函数返回dp数组的值,随着递归函数的一次次返回,逐渐把dp数组补全。 | |||
| b.从小问题推到总问题更简单时,用方法二,手动用for循环从底部逐层计算上去。 |
1.返回值和状态更新
| 写法 | 特征 | 举例 | 返回值是否有意义 |
|---|---|---|---|
| ① 记忆化递归(自顶向下) | 用返回值表示状态 | dfs(i) 返回从 i 出发的最大值 |
✅ 非常重要 |
| ② 递推(自底向上) | 不返回值,只更新表 | dp[i][j] = ... |
❌ 一般返回 void |
| a.把总问题分割成小问题更简单时,用方法一,函数返回dp数组的值,随着递归函数的一次次返回,逐渐把dp数组补全。 | |||
| b.从小问题推到总问题更简单时,用方法二,手动用for循环从底部逐层计算上去。 |