Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 多选
- public class Solution {
- public int backPackIII(int[] A, int[] V, int m) {
- int[] dp = new int[m+1];
- for (int i = 0; i < A.length; i++) {
- for (int j = 1; j <= m; j++) {
- if (j >= A[i]) dp[j] = Math.max(dp[j], dp[j-A[i]]+V[i]);
- }
- }
- return dp[m];
- }
- }
- 单选
- public class Solution {
- public int backPackII(int m, int[] A, int V[]) {
- int[] dp = new int[m+1];
- for (int i = 0; i < A.length; i++) {
- for (int j = m; j > 0; j--) {
- if (j >= A[i]) dp[j] = Math.max(dp[j], dp[j-A[i]]+V[i]);
- }
- }
- return dp[m];
- }
- }
- numbers
- 单选
- public class Solution {
- public int backPackV(int[] nums, int target) {
- int[] dp = new int[target+1];
- dp[0] = 1;
- for (int i = 0; i < nums.length; i++) {
- for (int j = target; j >= 0; j--) {
- if (j >= nums[i]) dp[j] += dp[j-nums[i]];
- }
- }
- return dp[target];
- }
- }
- 多选
- public class Solution {
- public int backPackIV(int[] nums, int target) {
- int[] dp = new int[target+1];
- dp[0] = 1;
- for (int i = 0; i < nums.length; i++) {
- for (int j = 1; j <= target; j++) {
- if (nums[i] == j) dp[j]++;
- else if (nums[i] < j) dp[j] += dp[j-nums[i]];
- }
- }
- return dp[target];
- }
- }
- 不同排列
- public class Solution {
- public int backPackVI(int[] nums, int target) {
- int[] dp = new int[target+1];
- dp[0] = 1;
- for (int i = 1; i <= target; i++) {
- for (int num: nums) {
- if (num <= i) dp[i] += dp[i-num];
- }
- }
- return dp[target];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement