浅说——九讲背包之01背包
0/1背包
0/1背包降維
完全背包
多重背包(二進(jìn)制優(yōu)化)
混合背包
二維費(fèi)用背包
分組背包
有依賴的背包
背包的方案總數(shù)\背包的具體方案路徑
0/1背包:
[問(wèn)題描述](經(jīng)典)有一個(gè)吝嗇的地主,不愿意給工人付工錢,就從家里的物品中取出N個(gè),對(duì)工人說(shuō), 你可以從這些物品中任意挑選,只要你的口袋裝得下。 現(xiàn)在已知物品的總數(shù)量N,和工人的口袋大小M,及每種物品所占的空間wi,物品的價(jià)值vi。求出該背包能裝載的最大價(jià)值。(物品不可以分,不考慮物品間的縫隙) 輸入:
2 8 8 6 3 4 5 4 3 3輸出:
16 有人說(shuō)貪心 不就對(duì)了,是啊,當(dāng)然不對(duì)。 貪心:先選單位空間能獲得價(jià)值更大者 2:8 3:4 3:3 15正確選擇:
2 8 3 4 5 4 16懂? 當(dāng)然用深搜的dalao我就不說(shuō)了,這明顯是01背包嘛。 第一步:狀態(tài)設(shè)想
總問(wèn)題:N個(gè)物品,占用M個(gè)空間時(shí)所能獲得的最大價(jià)值。
子問(wèn)題:f[i,j] :前i個(gè)物品占用j個(gè)空間時(shí)能獲得的最大價(jià)值。(背包慣用定義方式)
第二步:初步規(guī)劃動(dòng)規(guī)方程?從某個(gè)中間狀態(tài)思考來(lái)源
F[i][j]=……….設(shè)前面的任何決策都有答案了,當(dāng)前決策?(來(lái)源法)
因?yàn)橹挥羞x和不選兩種方案,所以f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]);(若不選,及前i-1個(gè)物品占j個(gè)空間的最大價(jià)值,f[i-1][j],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 若選,及前i-1個(gè)物品占j-w[i]個(gè)空間的最大價(jià)值,f[i-1][j-w[i]])
第三步:打表? 驗(yàn)證、確定動(dòng)規(guī)方程轉(zhuǎn)載于:https://www.cnblogs.com/mzyczly/p/11174542.html
總結(jié)
以上是生活随笔為你收集整理的浅说——九讲背包之01背包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。