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

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

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

所属知识点:一维动态规划 难度要求:— 考频:—

下面代码实现 0/1 背包的一维动态规划(第 i 个物品重量 wt[i]、价值 val[i],容量 W)。横线处应填写( )。
int knapsack(int W, vector<int>& wt, vector<int>& val) {
    int n = wt.size();
    vector<int> dp(W + 1, 0);
    for (int i = 0; i < n; ++i) {
        for (int w = W; w >= wt[i]; --w) {
            ________________________
        }
    }
    return dp[W];
}

正确答案:A

题目解析
0/1 背包一维写法:对容量 w,要么不装第 i 件(dp[w]),要么装(dp[w−wt[i]]+val[i]),取较大者,选 A。内层容量从大到小遍历正是为了保证每件物品只用一次。💡 一维 0/1 背包:容量逆序 + dp[w]=max(dp[w], dp[w−wt]+val)。

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

进入 GESPPASS 开始练习