GESP C++ 真题 · 逐题精解
首页 › C++六级真题 › 2026年9月 › 第15题

GESP 2026年9月 C++六级 单选题 第15题

C++六级单选题2026年9月第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]);
    }
}

正确答案:A

题目解析
容量从大到小枚举时,dp[w - weight[i]] 仍是尚未加入当前物品 i 的旧状态,从而保证每件物品最多被选择一次;若从小到大则会重复选择(变成完全背包)。正确答案 A。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习