關於揹包問題的研究

2021-08-05 20:29:07 字數 746 閱讀 5430

我們先從經典的0-1揹包談起,顯然這是乙個動態規劃。這個過程」商量「的問題是遇到乙個物品到底放還是不放呢?(每種物品僅有一件,可以選擇放或不放。)它的商量方程就是:

m[i][j]=max(m[i-1][j],m[i-1][j-w[i]]+v[i])————其中m[i][j]表示還有i個物品供選擇,揹包容量為j。

ac**:

二維dp:

for(i=1;i<=n;++i) //i表示物品i; }

//這本質上就是乙個由上到下,由左到右的填表過程;

一維dp:

for(i = 0;ifor(j = v;j>=w[i];j--)//01揹包

}

要先知道完全揹包和01揹包的區別,01揹包n個物品,每乙個物品有1個,而完全揹包每一件物品有無數個,只要求求出在不大於w的情況下求出最大的值;(也就是說它可以繼續選擇同一件物品,不一定要換成別的物品)

故它的商量方程和01揹包的只有一點點差別,就是是繼續選該物品還是選下一件。

**:

二維dp: 

for(i=1;i

<=n;++i) }

一維dp:

for(i=1;i

<=n;++i)

揹包問題還有各種變式,需要大家仔細琢磨。這裡就不一一講述了。

關於揹包問題的思考

在0 1揹包問題中的f陣列初始化過程中,存在如下思考方式 1 若要求揹包必須放滿,則初始如下 f 0 0 f 1.v 表示 無窮。表示當容積為0時,只接受乙個容積為0的物品入包。2 若要求揹包可以空下,則初始化如下 f 0.v 0 表示任意容積的揹包都有乙個有效解即為0。具體解釋如下 1.初始化的f...

關於01揹包問題

關於偉大的dp,入門便是從揹包問題開始,沒錯,揹包分為01揹包,完全揹包,多重揹包等。眾所周知完全揹包便是01揹包的反向思想,那麼什麼是01揹包?沒錯01揹包,顧名思義0和1 廢話 就是選 1 和不選 0 有一大堆東西 n件 有價值 v 有重量 w 有乙個承重 v 的揹包,嗯沒錯,跟貪心差不多,求可...

關於揹包問題的求解思路

求解揹包問題 首先理清是0 1揹包還是完全揹包,確定for迴圈,然後寫狀態方程 518 零錢兌換ii 377 組合總和 139單詞拆分 322零錢兌換 這三種屬於完全揹包問題。對於377這種,屬於有序放入,要求揹包在外迴圈,物品在內迴圈,dp i dp i num 如果不是有序放入,物品作為外迴圈,...