動態規劃 揹包總結

2021-07-10 07:48:18 字數 922 閱讀 1407

問題

n個物品重量為wi,價值為vi 從裡面挑取總質量和<=w的物品,求最大的價值。

思路
列舉最後乙個物品是否被選。 狀態dp[i][j] 在前i個物品裡面揹包大小為j下的最大價值。 dp

[i][

j]=m

ax(d

p[i−

1][j

],dp

[i−1

][j−

w[i]

]+v[

i])

問題
n種物品重量為wi,價值為vi 從裡面挑取總質量和<=w的物品,求最大的價值。

思路
列舉最後乙個物品被選擇的數量 0→

很大。 dp[i][j]定義同上, 則 dp

[i+1

][j]

=max

k>=0(

dp[i

][j−

k∗w[

i]]+

k∗v[

i])

優化

試圖消去k,這樣的話就能消去一維

dp[i + 1][j]

= max_(dp[i][j - k * w[i]] + k * v[i])

= dp[i][j], max_(dp[i][j-k*w[i]]+k*v[i])

=dp[i][j], max_(dp[i][j-w[i]- (k-1) * w[i]] + k * v[i])

//t = k-1

=dp[i][j],max_(dp[i][j-w[i]-t*w[i]] + t*v[i]) + v[i]

=dp[i][j],dp[i + 1][j-w[i]] + v[i]

總結 動態規劃 01揹包 完全揹包

前一段時間我學習了一下動態規劃裡面的01揹包和完全揹包,自己做了一些總結與大家分享一下,希望對你們有幫助 首先來說一下什麼是動態規劃 動態規劃就是把大問題拆分成小問題,通過尋找大問題與小問題的遞推關係,解決乙個個小問題,最終達到解決原問題的效果。通過填寫表把所有已經解決的子問題答案紀錄下來,動態規劃...

動態規劃 揹包問題總結

01揹包 完全揹包 多重揹包 混合揹包 二維費用的揹包問題 分組揹包 揹包問題求方案數 求揹包問題的方案 有依賴的揹包問題 includeusing namespace std const int n 1010 int n,m int v n w n 體積 價值 int dp n n int mai...

動態規劃 揹包

揹包經典問題 揹包問題01 乙個揹包容積為t 0 t 2000 現在有n 0 如下 includeusing namespace std int s 1005 bool f 3000 int main 揹包問題02 若每種物品有無限多個。從這n種物品中選取若干個裝入揹包內,使揹包所剩的空間最小。請求...