Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3. public class Knapsack {
  4. public static void main(String[] args) throws Exception {
  5. Scanner file = new Scanner(new File("knapsack.in"));
  6. int w = file.nextInt();
  7. int n = file.nextInt();
  8. int[] values = new int[n+1];
  9. int[] weights = new int[n+1];
  10. //1 based indexing
  11. for(int i = 1; i <= n; i++) {
  12. values[i] = file.nextInt();
  13. weights[i] = file.nextInt();
  14. }
  15. int[][] dp = new int[n+1][w+1];
  16. int[][] find = new int[n+1][w+1];
  17. for(int i = 1; i <= n; i++) {
  18. for(int j = 0; j <= w; j++) {
  19. if(weights[i] > j) {
  20. dp[i][j] = dp[i-1][j];
  21. find[i][j] = 0;
  22. }
  23. else {
  24. if(dp[i-1][j] > dp[i-1][j-weights[i]]+values[i]) {
  25. dp[i][j] = dp[i-1][j];
  26. find[i][j] = 0;
  27. }
  28. else {
  29. dp[i][j] = dp[i-1][j-weights[i]]+values[i];
  30. find[i][j] = 1;
  31. }
  32. }
  33. }
  34. }
  35. System.out.println(dp[n][w]);
  36. int W = w;
  37. for(int i = n; i >= 1; i--) {
  38. if(find[i][W] == 1) {
  39. System.out.println(values[i] + " " + weights[i]);
  40. W -= weights[i];
  41. }
  42. }
  43. }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement