0-1背包问题详解

这里给大家推荐一个好的文章                                http://www.hawstein.com/posts/dp-knapsack.html  

关于0-1背包问题,也许很多人看过《背包问题九讲》,里面主要是要理解那个背包问题的公式
     ………………………………………………(1)

         公式(1)当然是关键,其实我们很直观地从(1)中看出它的物理含义。F[i,v]这个二维数组代表的意思是,在背包容量为v,我们有从1到 i 号的物品供你选择,那
么你能在背包容量为v的前提下,所能获得的最大价值是F[i,v】,理解这个是问题中关键的关键。
    对于这个题目:
     0-1背包问题详解_第1张图片
我们采用伪代码:
     0-1背包问题详解_第2张图片
用实际的数字来分析问题:
     0-1背包问题详解_第3张图片
上表是在运行过程中F【i,v】数组的情况。其实这个原理很简单,无非就是对于第i个商品,你选或者不选 。
…………………………………………………………………………………(1)
还是这个公式,对于F[i,v],也就是在容是为v的情况下,我们选或者不选第i个商品,如果我们不选第i个商品,那么也就是说在背包容量为v的情况下我们的价值和
F[i-1,v]是一样的啦,这个意思是,我们不先第i个商品,问题没有进化,还是和原来一样(当然在背包的容量相等情况下),但是如果我们选第i个商品,那么就不
同了,我们的背包容量得先减C i      也就是第i个商品的体积啦 。当然我们在牺牲背包的容量的情况下,那么价值也得提升Wi。
当然我们是在这两者间选那个价值最大的。
























附件列表

     

    你可能感兴趣的:(问题)