01背包

作者: zazalu | 来源:发表于2016-09-23 08:08 被阅读0次

public class Knapsack_01 {
public static int getBiggestValue(int[] w,int[] v,int bagWeight,int productNum){
int[][] V = new int[productNum + 1][bagWeight + 1];

    for(int i = 0;i < productNum + 1;++i){
        V[i][0] = 0;
    }
    for(int j = 0;j < bagWeight +1;++j){
        V[0][j] = 0;
    }
    
    for(int i = 1;i < productNum +1;++i){
        for(int j = 1; j < bagWeight+1;++j){
            if(j < w[i-1]){
                V[i][j] = V[i-1][j];
            }else if(j >= w[i-1]){
                if(V[i-1][j] > V[i-1][j-w[i-1]] + v[i-1]){
                    V[i][j] = V[i-1][j];
                }else{
                    V[i][j] = V[i-1][j-w[i-1]] + v[i-1];

// System.out.print(i + "---->");
}
}
}
}

    return V[productNum][bagWeight];
}

public static int getBiggestValue(int bagWeight,int[] v,int[] w,int[] vw){
    int maxValues = 0;
    int j = 0;
    
    for(int i =0;i < vw.length;++i){
        if(w[vw[i]] <= bagWeight-j){
            j += w[vw[i]];
            maxValues += v[vw[i]];
        }else{
            maxValues += ((bagWeight -j)* (v[i]/w[i]));
            j = bagWeight;
        }
    }
    return maxValues;
}
public static void main(String[] args){
int[] v = {20,30,65,40,60};

int[] w = {10,20,30,40,50};
int bagWeight = 100;

int productNum = 5;

System.out.println("01背包:"+Knapsack_01.getBiggestValue(w,v,bagWeight,productNum));


int[] vf = {20,30,65,40,60};
int[] wf = {10,20,30,40,50};
int[] vwf = {2,0,1,4,3};
System.out.println("分数背包:"+Knapsack_01.getBiggestValue(bagWeight, vf, wf, vwf));
}

}

相关文章

  • 算法模板(一) 01背包,多重背包,完全背包

    01背包 多重背包 完全背包

  • 动态规划-背包问题

    01背包问题 详解:01背包问题详解链接

  • DP小结

    DP种类 线性DP 区间DP 树形DP 背包DP01背包满背包完全背包(转成01背包) 例子:线性动规:拦截导弹,...

  • java算法巩固训练day01

    01背包 完全背包 多重背包 多重背包二进制优化算法

  • 动态规划-混合、二维费用、分组背包

    混合背包 如果将01背包、完全背包、多重背包三个背包混合起来,也就是说,有的物品只可以取一次(01背包),有的物品...

  • 01-背包、完全背包、多重背包及其相关应用

    本文介绍了背包问题系列,主要包括: 【1】 01-背包及其应用【2】完全背包及其应用【3】多重背包 【1】01-背...

  • 01 01背包

  • 01背包

    题目: 有N种物品(每种物品只有一件)和一个容量为V的背包。放入第i件物品耗费的费用为Ci,得到的价值是vi,求解...

  • 01背包

    01背包的问题很早就想写了,但是因为一些意外的事情耽搁了下来今天补习一下01背包问题的计算过程。首先,01背包的问...

  • 01背包

    1. 问题 给定背包承重W,对于n件物品(每件物品重量wi,价值vi),在背包的承重范围内,可以带走的物品价值总和...

网友评论

      本文标题:01背包

      本文链接:https://www.haomeiwen.com/subject/jyktyttx.html