動態規劃之背包問題-01背包+完全背包+多重背包
阿新 • • 發佈:2018-08-12
自己 動態規劃 問題 動態 重復 -- 今天 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背包+完全背包+多重背包