01背包 模板1 2 总结
物品質(zhì)量 w[0] w[1] ?w[2] ....... w[n] ? ? ? ? ? ? ? ?背包容量c ? ? ? ? ? ? ? T
物品價(jià)值 v[0] ?v[1] ?v[2] ?....... ?v[n] ? ? ? ? ? ? ?物品種類 n ? ? ? ? ? ? ? ?N
?
(一)設(shè)DP(x,y) ? 表示 ?從前x項(xiàng)物品中 ?取出裝入 ?體積為y的背包 的 ?物品的最大價(jià)值。
? ? ? ? ? 前x項(xiàng)物品(0---- x-1 , X) ??去裝 ??? ? ? ?體積容量為y的背包 ?
?
? ? ?
? ? ? ? ? ? ? ? ?|-------- ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當(dāng) x=0 或 y=0
?DP(x,y) ? ? | ? ? ? ? ? ? ? ?DP(x-1,y)?? ? ? ? ? ? ? ? ? ? ? ? ? 不裝 第x 種
? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ??DP( x-1,y-w[x] ) ?+ ?v[x] ? ? ? ?y-w[x]>=0 ?裝 第x 種
?
?
?
?
?
?
?
?
?
(二)設(shè)DP(x,y)?表示 ? 從第x項(xiàng)物品開(kāi)始 ?到?第n項(xiàng)物品 ?中取物品裝入 ?體積為y 的背包 ?的 ? ?得到的最大價(jià)值。
?從第x項(xiàng)物品?開(kāi)始? ? ? ?(x, ? x+1 ?, ?X+2 ?, ?x+3 ?, ...........M ......n) ? ?
?
?
?
?
?
?? ? ? ? ? ? ? ?|-------- ? ? ? 0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當(dāng) x=M+1 ?或 y=0
?DP(x,y) ? ? | ? ? ? ? ? ? ? ? ?DP(x+1,y)?? ? ? ? ? ? ? ? ? ? ? ? ? 不裝 第x 種
? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ??DP( x+1,y-w[x] ) ?+ ?v[x] ? ? ? ?y-w[x]>=0 ?裝 第x 種
?
?
?
動(dòng)態(tài)規(guī)劃算法思想1:
設(shè)m[i][j]用來(lái)表示從前i項(xiàng)物品中區(qū)取出裝入體積為j的背包的物品的最大價(jià)值。
其中i的范圍為0到n,其中j的范圍為0到c,程序要尋求的解為m[n][c]。
可以分以下三種情況:
①m[0][j]對(duì)所有的j的值為0(物品種類為0), m[i][0]對(duì)所有的i的值為0(體積為0)
②當(dāng)前的體積j大于等于w[i]時(shí), m[i][j]是下面兩個(gè)量的最大值:m[i-1][j] (不裝)和 m[i-1][j-w[i] ]+v[i] (裝)
③當(dāng)前的體積j小于w[i]時(shí),m[i][j]等于m[i-1][j]
?
?
?
?
?
?
?
?
?
?
?
?
動(dòng)態(tài)規(guī)劃算法思想2:
設(shè)m[i][j]用來(lái)表示從第i項(xiàng)物品開(kāi)始到第n項(xiàng)物品中取物品裝入體積為j的背包的得到的最大價(jià)值。
其中i的范圍為0到n-1,其中j的范圍為0到c,程序要尋求的解為m[0][c]。
可以分為:
①m[n-1][j] 在當(dāng)j>=0并且j< w[n-1] 時(shí)等于0(裝不下),否則等于v[n-1] (可以裝上)
②當(dāng)前的體積j大于等于w[i]時(shí), m[i][j]是下面兩個(gè)量的最大值:m[i+1][j] 和 m[i+1][ j-w[i] ]+v[i]
③當(dāng)前的體積j小于w[i]時(shí),m[i][j]等于m[i+1][j]
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/2014acm/p/3908298.html
總結(jié)
以上是生活随笔為你收集整理的01背包 模板1 2 总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Web UI回归测试 -- Backs
- 下一篇: 边框颜色为 tintColor 的 UI