> 数学 >
dp动态规划中的背包问题01
背包问题有几步处理并不太明白,
(1)
f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
转化为
f[v]=max{f[v],f[v-c[i]]+w[i]} 时,为什么0...v的顺序要变成逆顺序 v...0
(2)
注意f[i][v]有意义当且仅当存在一个前i件物品的子集,其费用总和为v.所以按照这个方程递推完毕后,最终的答案并不一定是f[N] [V],而是f[N][0..V]的最大值.如果将状态的定义中的“恰”字去掉,在转移方程中就要再加入一项f[i][v-1],这样就可以保证f[N] [V]就是最后的答案.至于为什么这样就可以,由你自己来体会了.
还有希望可以解答上面这段话的含义.
人气:219 ℃ 时间:2020-04-29 18:32:34
解答
(1)将二维数组转化为一维数组之后,f[v]表示v的容量最多装多大价值.如果顺序枚举的话,每种物品可能多次使用.例如某个物品重量为5,价值为10,那么就会用f[0]去更新f[5],用f[5]去更新f[10],最后出现f[0]=0,f[5]=10,f[1...我明白了,谢谢你的回答啊,找了很多解释,还是你的最清楚了
推荐
猜你喜欢
© 2026 79432.Com All Rights Reserved.
电脑版|手机版