leetcode +DP。能否划分成两个相等的子集

点击打开链接
class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum =0;
        for(int i=0; i<nums.size(); i++){
            sum += nums[i];
        }
        if(sum%2 !=0) return 0;
        int target = sum/2;
        vector<int> count_of_sum(sum+1, 0);
        count_of_sum[0] =1;
        for(int i=0; i<nums.size(); i++){
            int add = nums[i];
            for(int j = sum; j>=add; j--){
                count_of_sum[j] += count_of_sum[j-add];// DP
            }
        }
        return count_of_sum[target];
    }
};

猜你喜欢

转载自blog.csdn.net/u013554860/article/details/80375715