LeetCode: Partition Equal Subset Sum

来源:互联网 发布:秒赞网源码 编辑:程序博客网 时间:2024/05/18 11:49

Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.

Note:

  1. Each of the array element will not exceed 100.
  2. The array size will not exceed 200.

Example 1:

Input: [1, 5, 11, 5]Output: trueExplanation: The array can be partitioned as [1, 5, 5] and [11].

Example 2:

Input: [1, 2, 3, 5]Output: falseExplanation: The array cannot be partitioned into equal sum subsets.
int subsetSum(int* nums, int numsSize, int s) {    int* dp = (int*)malloc((s + 1) * sizeof(int));    for (int i = 0; i <= s; ++i) {        dp[i] = 0;    }    dp[0] = 1;        for (int n = 0; n < numsSize; ++n) {        for (int i = s; i >= nums[n]; --i) {            dp[i] += dp[i - nums[n]];         }                if (dp[s] > 0) {            return dp[s];        }    }        return dp[s];}bool canPartition(int* nums, int numsSize) {    int sum = 0;    for (int i = 0; i < numsSize; ++i) {        sum += nums[i];    }        if (sum % 2) {        return false;    }        return subsetSum(nums, numsSize, sum / 2);}


1 0
原创粉丝点击