揹包問題之0 1揹包

2022-02-15 16:59:49 字數 649 閱讀 6021

0-1揹包是最基本的揹包問題,其核心思路就在於每個物品的放與不放(每個物品最多只能放一次)

題目有 n 個物品和乙個大小為 m 的揹包. 給定陣列 a 表示每個物品的大小和陣列 v 表示每個物品的價值.

問最多能裝入揹包的總價值是多大?

樣例輸入: m = 10, a = [2, 3, 5, 7], v = [1, 5, 2, 4]

輸出: 9

解釋: 裝入 a[1] 和 a[3] 可以得到最大價值, v[1] + v[3] = 9

解題**

public int backpackii(int m, int a, int v) 

}return dp[m];

}

此例主要是為了體會不同的問題運用0-1揹包思路解題時需要思考具體在dp陣列中存什麼?相應的狀態轉移方程怎麼寫。

題目給出 n 個物品, 以及乙個陣列, nums[i] 代表第i個物品的大小, 保證大小均為正數, 正整數 target 表示揹包的大小, 找到能填滿揹包的方案數。

每乙個物品只能使用一次

解題**

public int backpackv(int nums, int target) 

}return dp[target];

}

揹包問題之01揹包

01揹包就是說針對每一件物品,有選擇裝入或者放棄,是屬於動態規劃類的問題。現在假設我們有m件物品,各有價值,揹包承重為10,假設當前可用的承重量為v,當前在抉擇第m件物品是否放入,重量為w1,價值為v1,那麼,如果不放入,我們的價值應該保持不變,並與之前算出的最大價值相同,如果放入,放入後的價值就是...

揹包問題之0 1揹包

揹包問題大部分是這樣的 有乙個容量為v的揹包和一些物品。這些物品有兩個屬性,體積 和價值 每種物品只有乙個。要求用這個揹包裝下價值盡可能多的物品,求其最大價值。因為在最優解中,每個物品都有兩種可能的情況,即在揹包中存在 或者不存在 揹包中有0個或者1個該物品 因而被稱為0 1揹包問題。採藥 辰辰是個...

揹包問題之01揹包問題

題目 有n件物品和乙個容量為v的揹包。第i件物品的容量是c i 價值為w i 求解將哪些物品裝入揹包可以使得這些物品的費用總和不超過揹包容量,且價值總和最大。基本思路 作為最基礎的揹包問題,特點是 每種物品只有一件,可以選擇放或者是不放。用子問題定義狀態 f i v 表示前i件物品恰好放入乙個容量為...