//---------------------------------------------------------------------------- // Knapsack.java // Implementation of Dynamic Programming for the 0-1 kapsack problem. //---------------------------------------------------------------------------- class Knapsack{ public static void main( String[] args ){ int i, j; //int W = 10; // capacity of knapsack //int[] v = {0, 8, 10, 12, 11}; // values of objects (disregard index 0) //int[] w = {0, 5, 3, 2, 4}; // weights of objects (disregard index 0) //int n = v.length-1; // number of objects int W = 9; // capacity of knapsack int[] v = {0, 5, 5, 9, 4, 4, 12}; // values of objects (disregard index 0) int[] w = {0, 1, 4, 3, 4, 1, 6}; // weights of objects (disregard index 0) int n = v.length-1; // number of objects int[][] V = new int[n+1][W+1]; // Compute V[][] iteratively // Initialize row 1 for(j=0; j<=W; j++){ if( j0 && T[i][j]==T[i-1][j] ){ PrintOptimumSet(T, w, i-1, j); }else{ if( i>0 ){ PrintOptimumSet(T, w, i-1, j-w[i]); } System.out.print(i+" "); } } } }