1. 程式人生 > >動態規劃之背包問題-01背包+完全背包+多重背包

動態規劃之背包問題-01背包+完全背包+多重背包

自己 動態規劃 問題 動態 重復 -- 今天 code i++

01背包

有n種不同的物品,每種物品分別有各自的體積 v[i]價值 w[i] 現給一個容量為V的背包,問這個背包最多可裝下多少價值的物品。

1 for(int i = 1; i <= n; i++)
2     for(int j = V; j >= v[i]; j--)
3         dp[j] = max(dp[j], dp[j-v[i]]+w[i]);    //dp[V]為所求

完全背包

01背包每種物品只能取一個, 完全背包即物品不記件數,可取多件

1 for(int i = 1; i <= n; i++)
2     for(int j = v[i]; j <= V; j++)     //
和01背包的不同 3 dp[j] = max(dp[j],dp[j-v[i]+w[i]]);

多重背包

每種物品可取 件數h[i] 已經確定。

1 for(int i = 1; i <= n; i++)
2     for(int j = V; j >= v[i]; j--)
3         for(int k = 0; k <= h[i]; k++)
4             if(j >= k*v[i])
5                 dp[j] = max(dp[j],dp[j - k*v[i]] + k*w[i]);

這樣還是都差不多可以理解了,明天再學多重背包的二進制分解優化(看了一下下 好像沒看懂 hhhhh

今天就醬啦~ 感覺自己ya 虛度光陰 學了好些時候了的也 今天一直在重復敲模板 希望明天能有進步!

ヾ(?ω?`)o 白白

動態規劃之背包問題-01背包+完全背包+多重背包