Java 动态规划求解0-1背包问题
来源:互联网 发布:js 遍历子节点 编辑:程序博客网 时间:2024/05/29 06:36
动态规划问题是自底向上地求解问题的解,总结利用前面已经计算好的结果。假设我们已经找到前i-1个物品,使得它的价值达到最大,剩下的背包容量为j,用一个数组来表示max[i][j]。现在放第i个物品,那么有两种选择,放还是不放呢?如果它的重量超过了背包剩下的容量,那么价值等于前i-1个物品的价值;放与不放,要取决于如果放下的价值大于不放的价值。
直接看代码吧:
public class Demo {
private static int capacity = 11;//背包容量
private static int num_items = 3;//物品数量
public static void main(String[] arg){
int[] weigth ={3,4,5};
int[] value ={4,5,6};
int[][] max = new int[num_items+1][capacity+1];
//initial array
for(int i=0;i<=num_items;i++){
for(int j=0;j<capacity;j++){
max[i][j]=0;
}
}
//
for(int i=1;i<=num_items;i++){
for(int j=1;j<=capacity;j++){
if(j<weigth[i-1]){
//当前物品装不下时,背包最大价值还是等于原来
max[i][j]=max[i-1][j];
}else{
//是否装当前物品,取决于两者间的最大价值
max[i][j]=Math.max(max[i-1][j-weigth[i-1]]+value[i-1], max[i-1][j]);
}
}
}
System.out.println("背包最大价值为: "+max[num_items][capacity]);
}
}
- Java 动态规划求解0-1背包问题
- 0-1背包问题,动态规划求解
- 动态规划求解0-1背包问题
- 0/1背包问题-----动态规划求解
- 动态规划求解0-1背包问题
- 动态规划法求解简单的(0/1)背包问题
- 用动态规划求解0-1背包问题
- 0/1背包问题(动态规划求解)
- 0/1背包问题的动态规划求解
- 用动态规划求解0-1背包问题
- 0-1背包问题的动态规划求解
- 动态规划法——求解0-1背包问题
- 动态规划法——求解0-1背包问题
- 动态规划算法求解0,1背包问题
- 动态规划算法求解0-1背包问题
- 0——1背包问题动态规划求解
- 0/1背包问题的动态规划法求解 —— Java 实现
- 0/1背包问题的动态规划法求解 —— Java 实现
- mysql explain
- Bluetooth---BluetoothAdapter
- HTML5 新增JavaScript
- Hanoi塔问题
- 站长要学会与敌为友
- Java 动态规划求解0-1背包问题
- CentOS-6.3安装配置Nginx
- 串口同步传输与异步传输
- 关于百度知道的知识
- HDU 4333 Revolving Digits2012多校联赛第四场C题(扩展KMP+KMP)
- hdu 2034 人见人爱A-B
- Android google map api key的申请与使用(debug/release)
- HDU 1285 确定比赛名次——拓扑排序
- 以前自己写的一个分页的存储过程