Advertisement
absolute100

Untitled

Nov 25th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.79 KB | None | 0 0
  1. 多选
  2. public class Solution {
  3.     public int backPackIII(int[] A, int[] V, int m) {
  4.         int[] dp = new int[m+1];
  5.         for (int i = 0; i < A.length; i++) {
  6.             for (int j = 1; j <= m; j++) {
  7.                 if (j >= A[i]) dp[j] = Math.max(dp[j], dp[j-A[i]]+V[i]);
  8.             }
  9.         }
  10.         return dp[m];
  11.     }
  12. }
  13.  
  14. 单选
  15. public class Solution {
  16.     public int backPackII(int m, int[] A, int V[]) {
  17.         int[] dp = new int[m+1];
  18.         for (int i = 0; i < A.length; i++) {
  19.             for (int j = m; j > 0; j--) {
  20.                 if (j >= A[i]) dp[j] = Math.max(dp[j], dp[j-A[i]]+V[i]);
  21.             }
  22.         }
  23.         return dp[m];
  24.     }
  25. }
  26.  
  27. numbers
  28. 单选
  29. public class Solution {
  30.     public int backPackV(int[] nums, int target) {
  31.         int[] dp = new int[target+1];
  32.         dp[0] = 1;
  33.         for (int i = 0; i < nums.length; i++) {
  34.             for (int j = target; j >= 0; j--) {
  35.                 if (j >= nums[i]) dp[j] += dp[j-nums[i]];
  36.             }
  37.         }
  38.         return dp[target];
  39.     }
  40. }
  41.  
  42. 多选
  43. public class Solution {
  44.     public int backPackIV(int[] nums, int target) {
  45.         int[] dp = new int[target+1];
  46.         dp[0] = 1;
  47.         for (int i = 0; i < nums.length; i++) {
  48.             for (int j = 1; j <= target; j++) {
  49.                 if (nums[i] == j) dp[j]++;
  50.                 else if (nums[i] < j) dp[j] += dp[j-nums[i]];
  51.             }
  52.         }
  53.         return dp[target];
  54.     }
  55. }
  56.  
  57. 不同排列
  58. public class Solution {
  59.     public int backPackVI(int[] nums, int target) {
  60.         int[] dp = new int[target+1];
  61.         dp[0] = 1;
  62.         for (int i = 1; i <= target; i++) {
  63.             for (int num: nums) {
  64.                 if (num <= i) dp[i] += dp[i-num];
  65.             }
  66.         }
  67.         return dp[target];
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement