对背包问题的总结:
首先说递推公式:
arr[i][j] = Math.max(arr[i - 1][j], arr[i - 1][j - w[i]] + v[i]);
w[i]为物品质量的数组,v[i]为物品价值的数组
arr[i][j]表示装i个物品(实际上这里的i,arr[i][j] 表示装i个物品,w[i],v[i]表示选择第i个物品),承重为j时背包的最大价值,
首先容易想到arr[i][0] == 0(即arr[1][0],arr[2][0]....) 因为j==0表示承重为0,自然装不下东西,所以总价值为0
然后arr[0][j] == 0.... 原因是虽然可以承重j 但是装了0个物品 故总价值为0。
感谢大佬博客--转载自:http://blog.csdn.net/mu399/article/details/7722810
另外这里有测试数据:https://zhidao.baidu.com/question/77646243
-----大佬博客写的很详细,不过其实搞懂里面那个图就好了
理解了思想其实也就不那么难。
一直看博客不是办法,以为自己会了其实并不会,多动手码一码,其实没有那么难。
-----献给想成为大佬的我们