0/1闭包问题n=5 w={7,3,6,7,4}v={8,3,10,4,6},w=15,写出动态规化
详细过程。越具体越好
动态规划算法闭包问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- Gxiandy 2017-10-26 03:47关注
用m[i][j]表示当背包容量为j时选择第i,i+1,i+2,….n件物品时价值的最大值,wi表示第i件物品的重量,vi表示第i件物品的价值
考虑几种可能的情况:
1、 第i件物品的重量大于背包剩余容量(wi>j):不选第i件物品,此时有:
m[i][j]=m[i+1][j]
2、 第i件物品的重量小于等于背包剩余容量(wi<=j):此时可以做出两个选择,选择或者不选第i 件物品,而m[i][j]则是两种选择计算出的最优值,既:
m[i][j]=max{m[i+1][j],m[i+1][j-wi]+vi}(第一项表示不选i,第二项表示选择i)
3、 对于第一件物品的选择,若其重量大于背包容量则不选,否则选择后最大价值为该物品价值
由此可得出计算m[i][j]的递归式:
当n=5 w={7,3,6,7,4},v={8,3,10,4,6},w=15时
我们需要计算的就是m[1][15],计算顺序如下解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
- ¥20 yolov5自定义Prune报错,如何解决?
- ¥15 电磁场的matlab仿真
- ¥15 mars2d在vue3中的引入问题
- ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
- ¥15 算法题:数的划分,用记忆化DFS做WA求调
- ¥15 chatglm-6b应用到django项目中,模型加载失败
- ¥15 CreateBitmapFromWicBitmap内存释放问题。
- ¥30 win c++ socket
- ¥15 C# datagridview 栏位进度