第28284题 单选题
关于01背包问题的C++动态规划空间优化,下列说法正确的是?

已知常规二维动态规划解法解决01背包问题的代码如下:

int dp[105][105];
for(int i=1;i<=n;i++){
    for(int j=1;j<=V;j++){
        if(j < w[i]) dp[i][j] = dp[i-1][j];
        else dp[i][j] = max(dp[i-1][j], dp[i-1][j - w[i]] + v[i]);
    }
}

其中n为物品总数,V为背包总容量,w[i]、v[i]分别为第i件物品的重量和价值。现将该解法进行空间优化,将二维dp数组压缩为一维数组,下列说法正确的是?

A

优化后的一维DP代码可以将外层和内层循环顺序互换,不影响最终结果的正确性

B

优化后的一维DP数组需要倒序遍历背包容量(从V到w[i]),以保证不会重复选取同一物品

C

优化后的一维DP数组无需再处理j < w[i]的边界情况,可直接省略相关判断

D

优化后的一维DP解法的空间复杂度仍为O(nV),与二维解法完全一致

程序运行统计
暂无判题统计
提交0次 正确率0.00%
答案解析