0-1背包,重量等于容量而不是更小或相等

时间:2014-03-18 12:01:58

标签: algorithm knapsack-problem

在背包问题中,我们通常会尝试最大化背包中货物的价值,同时保持货物的总重量<= C,其中C是背包的容量。如果货物的总重量应该完全等于背包的容量= C,我该如何解决问题?

1 个答案:

答案 0 :(得分:1)

您正在解决的问题是相同的,但约束更严格。相同的DP解决方案将是: -

DP(n,W) = 0;
Valid(n,W) = false;

if(Valid(n-1,W)) {

    DP(n,W) = DP(n-1,W);
    Valid(n,W) = true;
}

if(Valid(n-1,W-weight[n])) {

     DP(n,W) = max(DP(n,W),DP(n-1,W-weight[n])+value[n]);
     Valid(n,W) = true;
}