Leetcode416. Partition Equal Subset Sum

来源:互联网 发布:文本数据挖掘 编辑:程序博客网 时间:2024/06/01 20:32

Leetcode416. Partition Equal Subset Sum

题目:

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.

题目分析:

首先,看到题目,第一就想到了动态规划算法。这道题如何用动态规划呢?

我们可以初始化一个bool类型的dp数组来标志。dp[j]标志着在这个数的时候是可以实现的。


代码:

class Solution {public:    bool canPartition(vector<int>& nums) {    int sum = accumulate(nums.begin(), nums.end(), 0), target = sum >> 1;    if (sum & 1) return false;    vector<int> dp(target + 1, 0);    dp[0] = 1;    for(auto num : nums)         for(int i = target; i >= num; i--)            dp[i] = dp[i] || dp[i - num];    return dp[target];}};


原创粉丝点击