码迷,mamicode.com
首页 > 其他好文 > 详细

01背包 模板1 2 总结

时间:2014-08-12 21:36:04      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   strong   2014   算法   log   

物品质量 w[0] w[1]  w[2] ....... w[n]                背包容量c               T

物品价值 v[0]  v[1]  v[2]  .......  v[n]              物品种类 n                N

 

(一)设DP(x,y)   表示  从前x项物品中  取出装入  体积为y的背包 的  物品的最大价值

          前x项物品(0---- x-1 , X)   去装          体积容量为y的背包  

 

     

                 |--------       0                                     当 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 种

 

 

 

 

 

 

 

 

 

(二)设DP(x,y) 表示   从第x项物品开始  到 第n项物品  中取物品装入  体积为y 的背包  的    得到的最大价值

 从第x项物品        (x,   x+1  ,  X+2  ,  x+3  , ...........M ......n)    

 

 

 

 

 

                |--------       0                                     当 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 种

 

 

 

动态规划算法思想1:

设m[i][j]用来表示从前i项物品中区取出装入体积为j的背包的物品的最大价值。

其中i的范围为0到n,其中j的范围为0到c,程序要寻求的解为m[n][c]。

可以分以下三种情况:

①m[0][j]对所有的j的值为0(物品种类为0), m[i][0]对所有的i的值为0(体积为0)

②当前的体积j大于等于w[i]时, m[i][j]是下面两个量的最大值:m[i-1][j] (不装)和 m[i-1][j-w[i-1]]+v[i] (装)

③当前的体积j小于w[i]时,m[i][j]等于m[i-1][j]

 

 

bubuko.com,布布扣

 

 

 

 

 

 

 

 

 

动态规划算法思想2:

设m[i][j]用来表示从第i项物品开始到第n项物品中取物品装入体积为j的背包的得到的最大价值。

其中i的范围为0到n-1,其中j的范围为0到c,程序要寻求的解为m[0][c]。

可以分为:

①m[n-1][j] 在当j>=0并且j< w[n-1] 时等于0(装不下),否则等于v[n-1] (可以装上)

②当前的体积j大于等于w[i]时, m[i][j]是下面两个量的最大值:m[i+1][j] 和 m[i+1][ j-w[i] ]+v[i]

③当前的体积j小于w[i]时,m[i][j]等于m[i+1][j]

 

 

bubuko.com,布布扣

 

01背包 模板1 2 总结,布布扣,bubuko.com

01背包 模板1 2 总结

标签:style   blog   http   color   strong   2014   算法   log   

原文地址:http://www.cnblogs.com/2014acm/p/3908298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!