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