算法导论 ch15 动态规划 01背包

1. source codes

 

 

2. test result

 

 

3. solution

 

From: http://zh.wikipedia.org/zh/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98

0-1背包问题

类似的方法可以解决0-1背包问题 ,算法同样需要伪多项式时间 。我们同样假定w1 , ..., wnW 都是正数。我们将在总重量不超过Y 的前提下,前j 种物品的总价格所能达到的最高值定义为A (j , Y )。

A (j , Y )的递推关系为:

  • A (0, Y ) = 0
  • A (j , 0) = 0
  • 如果wj > Y , A (j , Y ) = A (j - 1, Y )
  • 如果wjY , A (j , Y ) = max { A (j - 1, Y ), pj + A (j - 1, Y - wj ) }

通过计算A (n , W )即得到最终结果。为提高算法性能,我们把先前计算的结果存入表中。因此算法需要的时间和空间都为O(nW ),通过对算法的改进,空间的消耗可以降至O(W )。

阅读更多
文章标签: 算法 table include c
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭