01背包问题
来源:互联网 发布:新东方多媒体数据库 编辑:程序博客网 时间:2024/06/09 20:52
问题描述
给出n个物品的体积A[i]和其价值V[i],将他们装入一个大小为m的背包,最多能装入的总价值有多大?注意事项A[i], V[i], n, m均为整数。你不能将物品进行切分。你所挑选的物品总体积需要小于等于给定的m。样例对于物品体积[2, 3, 5, 7]和对应的价值[1, 5, 2, 4], 假设背包大小为10的话,最大能够装入的价值为9。
题目链接
点击进入
题目分析
(1)定义存储数组dp[i][j]:代表从第i(i>=0)件物品开始,容量为j的情况下可装入的最大物品价值。(2)递推表达式 当剩余容量不能容纳第i件物品时: dp[i][j]=dp[i+1][j]; 否则: dp[i][j]=max(dp[i+1][j],dp[i+1][j-A[i]]+V[i]);
代码如下
public int backPackII(int m, int[] A, int V[]) { int len=A.length; int[][] dp=new int[len][m+1]; for(int i=0;i<=m;i++){ if(i<A[len-1]) dp[len-1][i]=0; else dp[len-1][i]=V[len-1]; } for(int i=len-2;i>=0;i--){ for(int j=0;j<=m;j++){ if(j<A[i]) dp[i][j]=dp[i+1][j]; else dp[i][j]=Math.max(dp[i+1][j],dp[i+1][j-A[i]]+V[i]); } } return dp[0][m];}
阅读全文
0 0
- 背包问题---01背包
- DP 背包问题 01背包
- 01背包--苹果,背包问题
- 01背包 完全背包问题
- 背包问题之01背包
- 背包问题之01背包
- 背包问题1:01背包
- 背包问题《1》01背包
- 01背包+完全背包问题
- 背包问题-背包01-苹果
- 背包问题之01背包
- 背包问题(01背包,完全背包,多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 动态规划-----背包问题-----01背包,完全背包,多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 背包(01背包、完全背包、多重背包)问题总结
- 背包问题(01背包,完全背包,多重背包)
- 经典背包问题 01背包+完全背包+多重背包
- 基于Bootstrap响应式网页
- 全局捕获异常并保存到SD卡
- 封装
- Learning Python Part III 之 模块的使用
- (一)发现写博客还是有必要的,记录知识只为备忘,向着程序员的道路迈进——字符串反转
- 01背包问题
- Spring-AOP基于JAVA注解实现
- laravel monolog 日志权限问题
- linux shell之alias(别名)
- maven 不再支持源选项 1.5。请使用 1.6 或更高版本。
- 购物
- 怎样实现页面的快速加载???
- 创建tornado应用输出hello world
- 距离与相似度度量