今早说到T2,关于背包那个部分,为什么初始化不能为0,下面进行解释
转自点击打开链接(感谢大佬Orz)
背包问题有两种问法:
1.恰好装满背包的最优解
2.没要求装满背包,仅要求价格最大
-----------------------------------------------
对于第一种,除F[0]外其他全赋值为-maxlongint
对于第二种,全赋值为0
--------------------------------
理解:
初始化的f数组事实上就是在没有任何物品可以放入背包时的合法状态。
如果要求背包恰好装满,那么此时只有容量为0的背包可能被价值为0的nothing“恰好装满”,其它容量的背包均没有合法的解,属于未定义的状态,它们的值就都应该是-∞了。
如果背包并非必须被装满,那么任何容量的背包都有一个合法解“什么都不装”,这个解的价值为0,所以初始时状态的值也就全部为0了。