1.二维
背包容量为7,总共有四件物品,价值和重量表示为{v,w},它们的价值和重量分别是1{2,3},2{5,5},3{1,1},4{9,3},求背包最多能装多少
开始推导:
能装i个物品并选取前i个物品,背包容量为j。
dp[1][1]=0,显然是0,因为物品1的重量为3,你装答辩啊。
dp[1][2]=0,容量不够还是不行。
dp[1][3]=2,背包的容量刚好装的下物品1,获得该物品的价值2。
......
dp[1][7]=2,为什么省略?因为就装一个物品1,再怎么装还是2。
dp[2][1]=0,容量是1你装史呢。
dp[2][2]=0,装不了,因为他善。
dp[2][3]=2,能装物品1,但物品2还是塞不进去。
........为什么省略,因为容量小于5且只装前2个就只能塞个物品1进去。
dp[2][5]=5,此时有两个选择,两个物品肯定是塞不进去的,装物品1还是物品2?显然是物品2,因为它的价值更大。
dp[2][6]=5,dp[2][7]=5,容量小,无法同时装下前两个物品。
dp[3][1]=1,能装物品3。
dp[3][2]=1
dp[3][3]=?1?2?=2,可以装前三个,多了一个物品三,物品2装不下,只能在物品1和物品3选,显然装价值大的。
dp[3][4]=3,装物品1和物品3
dp[3][5]=5,选其中价值最大的,max(v[1],v[2],v[3],v[1]+v[3])=5,
dp[3][6]=6,此时面临多种选择,可行的方案归纳为max(v[1],v[2],v[3],v[1]+v[3],v[2]+v[3])=max(2,5,1,3,6)=6。
dp[3][7]=6,同理。
dp[4][1]=0,dp[4][2]=0。
dp[4][3]=9,显然是9,它比前面任何一个都大。
......
dp[4][4]=10,物品3和物品4。
.................同理
dp[4][7]=12,物品1+物品2+物品3。、
由此答案可得为12。
慢慢推太慢了,要发现其中的规律,发现每个局部答案都是从它前辈得来的,如dp[1][1]=0,dp[2][1]还是0,或是dp[2][5]=5,dp[3][5]=5,发现后者等于前者,其实你可以发现它们装的东西(决策)是一样的,后者也许面临多种选择但它的前身任然是最佳的,这算是一种继承,于是可得 \(dp[i][j]=dp[i-1][j]\)