さて、これは古い 0-1 ナップサックの問題ですが、取得できる合計最大価格を見つけた後、持ち運べるアイテムを見つける必要があります。ただし、次のテストケース(合計3項目)の場合
10 (max weight that I can carry)
5 3 (weight and value for each item)
5 2
6 5
ここでは、最大価格は 56
です10(5+5)
。どちらも同じ価格ですが、10 kg よりも 6 kg の商品の方が明らかに実現可能です。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 kg です。
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