14064. [GESP202609 六级 C++] 第 15 题
[GESP202609 六级 C++] 第 15 题
下面是一维数组实现的 0/1 背包。内层循环必须从大到小枚举容量,主要原因是( )。
for (int i = 0; i < n; ++i) {
for (int w = W; w >= weight[i]; --w) {
dp[w] = max(dp[w], dp[w - weight[i]] + value[i]);
}
}
{{ select(1) }}
-
保证每件物品最多被选择一次
-
保证物品必须按照重量从大到小选择
-
降低时间复杂度到
-
防止数组
dp发生越界