这个问题对应于哪个背包问题变体?

To which Knapsack-problem variation does this problem correspond?

让我们想象一下,我必须在限制条件下用物品装满我的背包:

知道:

示例:Wmax=400

Books Books weights Books profits Food Food weights Food profits
The Bible 500 25 Cheese 80 120
The little prince 150 5 Banana 250 200

这里,最好的解决方案是(小王子,香蕉)

我有一个类似的问题,我想找出最好的编码方式,但我不知道这是什么版本/变体,它是已知的吗变化 ?

我不确定是否有与你的匹配的现有变体,但很容易从经典变体中得出推论并解决这个问题。

经典变体具有二维动态规划(DP[N][W],其中 NW 是项目数和最大重量)。

在这个变体中,由于我们只能从每个类别中选择一个,您可以使用像 dp[i][w][j] 这样的 3D DP,它表示您可以从具有权重的前 i 个项目中获得的最大值wj 是一个 0/​​1 整数,表示是否选择了类别编号 j 中的项目。

我会离开实现,因为递归关系相对简单并且与经典变体非常相似。