题库首页 › GESP等级认证(Python) › 题目 25969

下面代码是一维数组优化 0/1 背包的核心片段,横线处应填入( ) for i in range(1, n + 1): for c in range(W, w[i] - 1, -1): ------------

A:dp[c] = max(dp[c], dp[c + w[i]] + v[i])
B:dp[c] = min(dp[c], dp[c - w[i]] + v[i])
C:dp[c] = dp[c - w[i]] + v[i]
D:dp[c] = max(dp[c], dp[c - w[i]] + v[i])

正确答案:D

答案解析

遍历物品时,对每个容量从大到小更新状态,确保每个物品仅被使用一次。状态转移基于当前容量能否容纳该物品重量,若能,则比较不选该物品时的价值与选择该物品后由剩余容量推导出的价值之最大值,用以更新当前容量下的最优解。数组下标表示容量大小,值表示对应最大价值。更新过程依赖于之前计算过的较小容量的状态,且必须逆序遍历容量以避免重复使用同一物品。

试卷来源:202606 CCF-GESP编程能力等级认证Python七级真题

本卷相关题目

在线做题 同科目题库