This commit is contained in:
krahets
2023-08-17 05:12:05 +08:00
parent f0826da7f6
commit 97c532b228
67 changed files with 1481 additions and 1066 deletions

View File

@@ -25,7 +25,7 @@ status: new
![爬到第 3 阶的最小代价](dp_problem_features.assets/min_cost_cs_example.png)
<p align="center"> Fig. 爬到第 3 阶的最小代价 </p>
<p align="center"> 图:爬到第 3 阶的最小代价 </p>
设 $dp[i]$ 为爬到第 $i$ 阶累计付出的代价,由于第 $i$ 阶只可能从 $i - 1$ 阶或 $i - 2$ 阶走来,因此 $dp[i]$ 只可能等于 $dp[i - 1] + cost[i]$ 或 $dp[i - 2] + cost[i]$ 。为了尽可能减少代价,我们应该选择两者中较小的那一个,即:
@@ -248,7 +248,7 @@ $$
![爬楼梯最小代价的动态规划过程](dp_problem_features.assets/min_cost_cs_dp.png)
<p align="center"> Fig. 爬楼梯最小代价的动态规划过程 </p>
<p align="center"> 图:爬楼梯最小代价的动态规划过程 </p>
本题也可以进行状态压缩,将一维压缩至零维,使得空间复杂度从 $O(n)$ 降低至 $O(1)$ 。
@@ -447,7 +447,7 @@ $$
![带约束爬到第 3 阶的方案数量](dp_problem_features.assets/climbing_stairs_constraint_example.png)
<p align="center"> Fig. 带约束爬到第 3 阶的方案数量 </p>
<p align="center"> 图:带约束爬到第 3 阶的方案数量 </p>
在该问题中,如果上一轮是跳 $1$ 阶上来的,那么下一轮就必须跳 $2$ 阶。这意味着,**下一步选择不能由当前状态(当前楼梯阶数)独立决定,还和前一个状态(上轮楼梯阶数)有关**。
@@ -469,7 +469,7 @@ $$
![考虑约束下的递推关系](dp_problem_features.assets/climbing_stairs_constraint_state_transfer.png)
<p align="center"> Fig. 考虑约束下的递推关系 </p>
<p align="center"> 图:考虑约束下的递推关系 </p>
最终,返回 $dp[n, 1] + dp[n, 2]$ 即可,两者之和代表爬到第 $n$ 阶的方案总数。