代码随想录算法训练营day41|| 第八章 动态规划

416. 分割等和子集

给你一个 只包含正整数 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。题目

class Solution {
public:
    bool canPartition(vector& nums) {
        int sum=0;
        for(auto num:nums){
            sum+=num;
        }
        if(sum%2==1){
            return false;
        }
        int target=sum/2;
        vector dp(10001,0);
        for(int i=0;i=nums[i];j--){
                dp[j]=max(dp[j],dp[j-nums[i]]+nums[i]);
            }
        }
        if(dp[target]==target){
            return true;
        }
        return false;
    }
};

你可能感兴趣的:(算法,动态规划,数据结构)