algorithm - 如何优化0/1背包的解决方案?

标签 algorithm knapsack-problem

标准背包问题的解决方案是 O(nW),我们将每次增加权重 +1 以获得解决方案。

有没有解决背包问题的方法,不需要一次增加重量+1。

例如我能想到的一种方法是将所有数字除以其公分母

容量 = 100 权重 = [5, 10, 20] -> 容量 = 20 权重 = [1, 2, 4]

最佳答案

只有自下而上的动态规划实现才需要以 1 为步长增加权重。如果你自上而下地实现它,你可以只做一个递归调用,同时从剩余容量中减去当前项目的重量。

关于algorithm - 如何优化0/1背包的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30857389/

相关文章:

java - 递归背包返回错误答案

java - 基本压缩算法中计算的一个额外字符

algorithm - 搜索本文数据库的复杂性

c++ - 给定一个二叉搜索树和一个数字,找到一条路径,其节点的数据相加为给定的数字。

java - 这个 Stacked Number 生成代码有什么问题?

algorithm - 为密码破解者提取列表子集的组合算法

algorithm - 什么样的算法? (背包,垃圾桶!?)

c++ - 背包问题变体的递归关系?

arrays - 编程竞赛中的背包变式

algorithm - 折叠背包,容量变化是根据选择的元素而不是数量