algorithm - 0-1 重量等于容量而不是小于或等于容量的背包

标签 algorithm knapsack-problem

在背包问题中,我们通常会尝试最大化背包中 cargo 的值(value),同时保持 cargo 的总重量 <= C,其中 C 是背包的容量。当 cargo 的总重量正好等于背包的容量=C时,如何解决?

最佳答案

您要解决的问题是相同的,但约束更严格。相同的 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;
}

关于algorithm - 0-1 重量等于容量而不是小于或等于容量的背包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22478789/

相关文章:

c# - 快速查找遭受浮点不准确

algorithm - 预先计算订单时的线性时间复杂度排序算法

python - 有没有好的方法来进行这种类型的挖掘?

sql - 查找 2 个 sql 查询之间的匹配项

algorithm - 为什么背包问题的运行时间是 n 和 2 W 的位数

python - 我是否需要使用装箱算法或背包?

algorithm - 如何分析这个算法的复杂度?

php - 在 php 中对 Knapsack 算法添加限制

algorithm - 使用递归的背包解决方案

algorithm - 具有依赖作业/具有多个所需运行时间的作业的加权间隔调度