mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-03 18:50:58 +08:00
Unify punctuation.
This commit is contained in:
@@ -12,13 +12,13 @@
|
||||
|
||||
完全背包和 0-1 背包问题非常相似,**区别仅在于不限制物品的选择次数**。
|
||||
|
||||
- 在 0-1 背包中,每个物品只有一个,因此将物品 $i$ 放入背包后,只能从前 $i-1$ 个物品中选择;
|
||||
- 在完全背包中,每个物品有无数个,因此将物品 $i$ 放入背包后,**仍可以从前 $i$ 个物品中选择**;
|
||||
- 在 0-1 背包中,每个物品只有一个,因此将物品 $i$ 放入背包后,只能从前 $i-1$ 个物品中选择。
|
||||
- 在完全背包中,每个物品有无数个,因此将物品 $i$ 放入背包后,**仍可以从前 $i$ 个物品中选择**。
|
||||
|
||||
这就导致了状态转移的变化,对于状态 $[i, c]$ 有:
|
||||
|
||||
- **不放入物品 $i$** :与 0-1 背包相同,转移至 $[i-1, c]$ ;
|
||||
- **放入物品 $i$** :与 0-1 背包不同,转移至 $[i, c-wgt[i-1]]$ ;
|
||||
- **不放入物品 $i$** :与 0-1 背包相同,转移至 $[i-1, c]$ 。
|
||||
- **放入物品 $i$** :与 0-1 背包不同,转移至 $[i, c-wgt[i-1]]$ 。
|
||||
|
||||
从而状态转移方程变为:
|
||||
|
||||
@@ -200,9 +200,9 @@ $$
|
||||
|
||||
**零钱兑换可以看作是完全背包的一种特殊情况**,两者具有以下联系与不同点:
|
||||
|
||||
- 两道题可以相互转换,“物品”对应于“硬币”、“物品重量”对应于“硬币面值”、“背包容量”对应于“目标金额”;
|
||||
- 优化目标相反,背包问题是要最大化物品价值,零钱兑换问题是要最小化硬币数量;
|
||||
- 背包问题是求“不超过”背包容量下的解,零钱兑换是求“恰好”凑到目标金额的解;
|
||||
- 两道题可以相互转换,“物品”对应于“硬币”、“物品重量”对应于“硬币面值”、“背包容量”对应于“目标金额”。
|
||||
- 优化目标相反,背包问题是要最大化物品价值,零钱兑换问题是要最小化硬币数量。
|
||||
- 背包问题是求“不超过”背包容量下的解,零钱兑换是求“恰好”凑到目标金额的解。
|
||||
|
||||
**第一步:思考每轮的决策,定义状态,从而得到 $dp$ 表**
|
||||
|
||||
@@ -214,8 +214,8 @@ $$
|
||||
|
||||
与完全背包的状态转移方程基本相同,不同点在于:
|
||||
|
||||
- 本题要求最小值,因此需将运算符 $\max()$ 更改为 $\min()$ ;
|
||||
- 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 $+1$ 即可;
|
||||
- 本题要求最小值,因此需将运算符 $\max()$ 更改为 $\min()$ 。
|
||||
- 优化主体是硬币数量而非商品价值,因此在选中硬币时执行 $+1$ 即可。
|
||||
|
||||
$$
|
||||
dp[i, a] = \min(dp[i-1, a], dp[i, a - coins[i-1]] + 1)
|
||||
|
||||
Reference in New Issue
Block a user