【发布时间】:2012-06-07 08:42:14
【问题描述】:
嗯,这是一个古老的 0-1 背包问题,但在找到我能得到的最高总价格后,我需要找到我可以携带的物品。但是对于下面的测试用例(共3项)
10 (max weight that I can carry)
5 3 (weight and value for each item)
5 2
6 5
这里的最高价格是 5。但重量可以是 6 或 10(5+5) 。两者都会给出相同的价格,但显然可行的是 6 公斤的物品而不是 10 公斤的物品。我想提示我如何从 dp 矩阵计算这个。我得到了这个测试用例的以下矩阵。
0 0 0 0 3 3 3 3 3 3
0 0 0 0 3 3 3 3 3 5
0 0 0 0 3 5 5 5 5 5
使用此算法,它发现重量为 10,但最佳重量为 6 公斤。
i=n, k=W(max weight)// n= total items
while i,k > 0
if dp[i,k] ≠ dp[i−1,k] then
mark the ith item as in the knapsack
i = i−1, k = k-w(weight of ith item)
else
i = i−1
【问题讨论】:
标签: algorithm dynamic knapsack-problem