程式語言 - LeetCode - C++ - 416. Partition Equal Subset Sum



題目:


解答:

class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum = 0;

        for (int n : nums) {
            sum += n;
        }

        if (sum % 2) {
            return false;
        }

        int target = sum >> 1;
        vector<int> dp(target + 1, false); 

        dp[0] = true;
        for (int n : nums) {
            for (int i = target; i >= n; --i) {
                dp[i] = dp[i] || dp[i - n]; 
            }
        }

        return dp[target];
    }
};