0-1背包问题整理java代码

0-1背包问题讲解:https://www.cnblogs.com/arsenalfaninecnu/p/8945548.html

代码


/*
 *
最多可以放8公斤的物品
物品1:3公斤   价值4元
物品2:5公斤   价值4元
物品3:2公斤   价值3元
物品4:6公斤   价值5元
物品5:4公斤   价值3元

0    0    0    0    0    0    0    0    0    0    0    0    0    
0    0    0    4    4    4    4    4    4    4    4    4    4    
0    0    0    4    4    4    4    4    8    8    8    8    8    
0    0    3    4    4    7    7    7    8    8    11   11   11   
0    0    3    4    4    7    7    7    8    9    11   12   12   
0    0    3    4    4    7    7    7    8    10   11   12   12   

 */
public class Main {
    public static void main(String[] args) {
        //定义一个数组a[i][j] = a[i]                 i表示当前物品的序号选上,j表示这个位置能得到的最大值
        //选或者不选动态规划
//        Scanner scn = new Scanner(System.in);
        int [] w = {3,5,2,6,4};//表示每件物品的重量
        int [] v = {4,4,3,5,3}; //表示每件物品的价值
//        for(int i=1;i<6;i++) {
//            w[i] = scn.nextInt();//输入重量
//            v[i] = scn.nextInt();//输入价值
//        }

        int [][] f = new int[6][13];   //8表示背包最多能放8公斤的重量
        int[][] path = new int[6][13];
        for(int j=0;j0&&j>0){
            if(path[i][j] == 1){
                System.out.print("第"+i+"个物品装入 ");
                j -= w[i-1];
            }
            i--;
        }
    }
}



结果:

0-1背包问题整理java代码_第1张图片

你可能感兴趣的:(算法与数据结构)