揹包dp的核心思想(動態規劃)

2021-10-18 21:22:22 字數 306 閱讀 5894

突然發現我一直沒有真正理解揹包,真正的揹包應該是用空間換時間的一種dp方法,本質上就是n個物品選或不選,理論上有2

n2^n

2n種可能結果,但是揹包利用的就是值域很小這一特點來重疊子結構,所以揹包本質上處理的應該是乙個集合中的所有物品,選或不選對應權值的變化。

有時候這樣的權值甚至是多維度的,我們進行的就是多個維度上的重疊子結構。

可能是負數,可能操作不是加減適用於任意複雜的操作,但是關鍵在於狀態轉移的單調性,否則沒法進行狀態轉移(對於特殊情況比如異或,我們就不需要用揹包處理了)

另外多項式的乘法過程實際上也是揹包問題。

DP 動態規劃 揹包問題

將乙個容量為v的揹包,物品有兩個屬性,乙個w和乙個v表示體積和屬性值。每種物品只有乙個。要求裝下盡可能多,求最大價值。轉移狀態方程 dp j max dp dp j list i w list i v,dp j 1 include includeusing namespace std struct ...

動態規劃(DP)揹包問題

dp做題的步驟 1.確定狀態變數 dp i dp i j 的含義 2.確定狀態轉移方程 3.確定邊界條件 4.確定遞推順序 題目1 01揹包 有n個重量和價值分別為w和v的物品。從這些物品中挑選總重量不超過w的物品。求所有挑選方案中價值總和的最大值 思路 dp i 1 j 表示從前i個物品中選出總重...

DP動態規劃 揹包問題

具體例子 有n個重量和價值分別為wi,vi的物品,從這些物品中挑選出總重量不超過w的物品,求所有挑選方案中價值總和的最大值。例如 n 4 w,v w 5 dp思想 求出狀態轉移方程,也就是求出遞推式。首先將問題一般化 解決此問題需要2個一維陣列,和1個二維陣列 w i 表示第i個物品的重量,下標從0...