瞎說一波3種基本揹包問題 希望巨巨們指出錯誤

2021-07-16 20:34:14 字數 628 閱讀 9164

0/1揹包;

這是自己接觸最早的揹包,其實說0和1揹包是最早。

他很自由,價值和重量成比例,像一塊豆腐你想對某一塊拿多少就切多少,那麼很明顯處理方案就是按照物品價值和重量的比值排序,也可以說是效率吧,然後從大到小按照題目意思取就好了。不多說,繼續。

for(int j=w;j>=w[i];j--)

dp[j]=max(dp[j],dp[j-w[i]]+val[i]);

剛剛被二維完全揹包搞得腦子宕機,所以心血來潮給自己總結一下,其實文字上下肯定很多錯誤,也請巨巨們直言指出qaq,真的非常感謝指出的巨巨。

ok,繼續。

問題變成了,在0/1揹包問題的基礎上,現在乙個物品是可以取無限個的。

我們可以先看看0/1揹包問題省去一維的演算法,我們發現他是倒推的,是啊,因為如果正推就會造成第i個物品在某一時刻被取了,因為dp值會變大,那麼好巧啊,在某一刻我那個j-w[i]就等於了剛剛被更新(取了該物品)的重量,好已累加,這個i物品就被取了兩次了,好,更巧,後面又有乙個重量類似這樣被更新,如果再巧一點,這個物品就要被取無數次了,這就不滿足0/1揹包了,等等,你剛剛說無限次,哎呀,完全揹包正好是無限次,那麼正的遞推正好滿足啊。對吼,就是這樣,完全揹包就是正的推的寫法。= =、瞎瘠薄這樣講。。。

三種基本揹包問題

問題描述 有n件物品和容量為m的揹包 給出i件物品的重量以及價值 求解讓裝入揹包的物品重量不超過揹包容量 且價值最大 特點 這是最簡單的揹包問題,特點是每個物品只有一件供你選擇放還是不放。二維解法 設f i j 表示前 i 件物品 總重量不超過 j 的最大價值 可得出狀態轉移方程 f i j max...

三種基本揹包問題

問題描述 有n件物品和容量為m的揹包 給出i件物品的重量以及價值 求解讓裝入揹包的物品重量不超過揹包容量 且價值最大 特點 這是最簡單的揹包問題,特點是每個物品只有一件供你選擇放還是不放。如果想不通 就填表觀察過程。輸入 5 10 2 62 3 6 55 4 4 6輸出 15 二維解法 設f i j...

限定條件不止一種的揹包問題

對於正常的揹包問題,只有乙個限定條件 揹包容量不超過多少,而有些揹包問題有多重限定條件,比如nasa的食物計畫這道題,有體積和質量這兩個限定條件。對於這種問題,其實是和正常的揹包問題是差不多的,只需要多加一層迴圈而已。下面附上這道題的 include include define maxl 401 ...