01背包相关题

01背包相关题_第1张图片

 题解:dp[j]表示目标和为j时的最大组合种数

class Solution {
public:
   int dp[1005];
    int findTargetSumWays(vector& nums, int target) {
            int val;
            int sum=0;
            for(int i=0;i=nums[i];j--){
                        dp[j]+=dp[j-nums[i]];
                    }
                }
                return dp[val];

            }
    }
};

01背包相关题_第2张图片

 

class Solution {
public:
    // int dp[3005];
    int lastStoneWeightII(vector& stones) {
        int sum=0;
       vectordp(3005,0);
        for(int i=0;i=stones[i-1];j--)
            {
                dp[j]=max(dp[j-stones[i-1]]+stones[i-1],dp[j]);
            }
        }
        return abs(x-2*dp[sum]);
        // return 0;
    }
};

01背包相关题_第3张图片

 

class Solution {
public:
    int dp[205][20005];
    bool canPartition(vector& nums) {
            int  res=0;
            for(int i=0;i> dp(n+1,vector(val+5));
                for(int j=0;j<=val;j++){
                    if(j>=nums[0])
                    {
                        dp[0][j]=nums[0];
                    }
                }
                for(int i=1;i

01背包相关题_第4张图片

 

class Solution {
public:
    int dp[105][105];
    int findMaxForm(vector& strs, int m, int n) {
        int N=strs.size();
        vectorMnum(N+5,0);
        vectorNnum(N+5,0);
        for(int i=0;i=Mnum[i];j--)
            {
                for(int k=n;k>=Nnum[i];k--)
                {
                    dp[j][k]=max(dp[j-Mnum[i]][k-Nnum[i]]+1,dp[j][k]);
                }
                
            }
        }
        return dp[m][n];

    }
};

你可能感兴趣的:(leetcode,算法,职场和发展)