/**
*
* @author Administrator
* @version 2011.06.15
* 动态规划法解决0/1背包问题
*/
public class DPBeibao01 {
/**
* @param args
*/
public static void main(String[] args) {
int w[]={0,2,2,6,5,4};
int v[]={0,6,3,5,4,6};
System.out.println(maxValue(w,v,10));
}
/**
*
* @param w存放物品的重量
* @param v存放物品的价值
* @param c背包的容量
* @return
*/
private static int maxValue(int w[],int v[],int c){
int len=w.length;
//val[i][j]表示把前i个物品放入容量为j的背包中得到的价值
int val[][]= new int[len][c+1];
for(int i=0;i<len;i++){
val[i][0]=0;
}
for(int j=0;j<=c;j++){
val[0][j]=0;
}
for(int i=1;i<len;i++){
for(int j=1;j<=c;j++){
if(w[i]>j)val[i][j]=val[i-1][j];
else{
val[i][j]=Math.max(val[i-1][j], val[i-1][j-w[i]]+v[i]); }
}
}
int j=c;
int z[]=new int[len];//记录物品是否被装入背包中
for(int m=len-1;m>0;m--){
if(val[m][j]==val[m-1][j])z[m]=0;
else{
z[m]=1;
j=j-v[m];
}
}
return val[len-1][c];
}
}
分享到:
相关推荐
背包问题(Knapsack Problem)是一个经典的组合优化问题,通常分为两种类型:0/1背包问题和分数背包问题。 1. **0/1背包问题**: - 给定一组物品,每个物品都有自己的重量和价值,要求在给定的背包容量下,选择...
背包问题是一个经典的组合优化问题,通常分为0-1背包问题和分数背包问题两种形式。 1. **0-1背包问题**: 在这个问题中,给定一个背包的容量和一组物品,每个物品有自己的重量和价值。目标是决定哪些物品应该放入...
0-1背包问题,部分背包问题。分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法。附件中包含所有算法源代码.c文件,修改下文件名直接编译执行即可
1. **0/1背包问题**:这是背包问题最基本的形式,要求对于每个物品,只能选择装入背包或者不装,不能分割物品。 2. **动态规划解法**:背包问题通常使用动态规划来求解。动态规划的思路是构建一个二维数组dp[i][j],...
DP算法篇之初学背包问题 DP算法篇之初学背包问题 DP算法篇之初学背包问题
dp acm 背包 dp 背包讲解 动态规划优化 斜率优化
动态规划(DP)——背包问题算法详解[背包九讲]
0-1背包问题是一个经典的动态规划问题:有一个背包,最大承重为W,现有n件物品,每件物品的重量为w[i],价值为v[i]。要求在不超过背包承重的情况下,选择一些物品放入背包,使得背包中物品的总价值最大。 动态规划...
01背包问题动态规划 01背包问题是一个经典的动态规划问题,在给定一定... vector<vector<int>> dp(n + 1, vector(W + 1, 0)); // 动态规划求解 for (int i = 1; i ; ++i) { for (int w = 1; w ; ++w) { // 如果第
dfs回溯法解决0-1背包的问题。 对比dp方法,dfs可以减小空间复杂度。
背包问题是一个经典的优化问题,通常有两个版本:0-1背包问题和完全背包问题。以下是这两个问题的简要介绍以及解决方法。 0-1背包问题: 在0-1背包问题中,有一个背包和一组物品,每个物品都有自己的重量和价值。...
《背包问题九讲》,dd_engi大神...目录:1、01背包问题;2、完全背包问题;3、多重背包问题;4、混合三种背包问题;5、二维费用背包问题;6、分组的背包问题;7、有依赖的背包问题;8、泛化物品;9、背包问题的变化;
0-1 背包 6/4/20 3 凯撒军团 DP 6/4/20 3a DP writeup + Caeser Legion 解决方案 DP 8/4/20 4 数字DP博客 数字DP 10/4/20 5 花卉 单态DP 29/4/20 6 馅饼规则 简单的DP(递归) 6/6/20 7 难题 简单DP(制表) 6/6/20 ...
在中国,背包问题一般是这样描述的:设n个重量为(W1,W2,...Wn)的物品和一个载重为S的背包,将物品的一部分xi放进背包中的利润是Pixi,问如何选择物品的种类和数量,使得背包装满而获得最大的利润?另有一简化版本...
关于dp(动态规划)中的背包问题的讨论,还有很多总结,这上面是用思路引导我们去慢慢理解背包问题的
完全背包问题,0-1背包问题,多重背包......
动态规划概念 最长上升子序列 最长公共子序列 矩阵连乘问题 背包问题 树形DP 状态压缩DP
包括0-1背包、无限背包、有限背包、有价值背包、小数背包(贪心即可)等,是极为经典的模型,其转化与优化也是很重要的。 2、最长非降子序列模型 改版:渡河问题、合唱队型等 3、最大子段和模型 改版:K大子段和、...
acm algorithm dp 背包9讲 acm algorithm dp 背包9讲acm algorithm dp 背包9讲acm algorithm dp 背包9讲acm algorithm dp 背包9讲
背包问题九讲.doc 动态规划经典课件!背包型DP。 【算法与数据结构·DP专题】