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 , ..., wn 和W 都是正数。我们将在总重量不超过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 )
- 如果wj ≤ Y , A (j , Y ) = max { A (j - 1, Y ), pj + A (j - 1, Y - wj ) }
通过计算A (n , W )即得到最终结果。为提高算法性能,我们把先前计算的结果存入表中。因此算法需要的时间和空间都为O(nW ),通过对算法的改进,空间的消耗可以降至O(W )。