[LeetCode416]Partition Equal Subset Sum
2016-10-31 22:09
441 查看
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:
Each of the array element will not exceed 100.
The array size will not exceed 200.
Example 1:
Example 2:
Subscribe to see which companies asked this question
使用动态规划的方法来解决这个问题,用布尔数组dp[i]表示能否用给定数组中的项求和得到i,能则为true,否则为false,得到状态转移方程为dp[j]=dp[j]||dp[j-nums[i]],代码如下:
class Solution {
public:
bool canPartition(vector<int>& nums) {
int n=nums.size();
int sum=0;
for(int i=0;i<n;i++)
{
sum+=nums[i];
}
if(sum%2!=0)
return false;
bool dp[sum/2+1]={false};
dp[0]=true;
for(int i=0;i<n;i++)
{
for(int j=sum/2;j>=nums[i];j--)
{
dp[j]=dp[j]||dp[j-nums[i]];
}
}
return dp[sum/2];
}
};
Note:
Each of the array element will not exceed 100.
The array size will not exceed 200.
Example 1:
Input: [1, 5, 11, 5] Output: true Explanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:
Input: [1, 2, 3, 5] Output: false Explanation: The array cannot be partitioned into equal sum subsets.
Subscribe to see which companies asked this question
使用动态规划的方法来解决这个问题,用布尔数组dp[i]表示能否用给定数组中的项求和得到i,能则为true,否则为false,得到状态转移方程为dp[j]=dp[j]||dp[j-nums[i]],代码如下:
class Solution {
public:
bool canPartition(vector<int>& nums) {
int n=nums.size();
int sum=0;
for(int i=0;i<n;i++)
{
sum+=nums[i];
}
if(sum%2!=0)
return false;
bool dp[sum/2+1]={false};
dp[0]=true;
for(int i=0;i<n;i++)
{
for(int j=sum/2;j>=nums[i];j--)
{
dp[j]=dp[j]||dp[j-nums[i]];
}
}
return dp[sum/2];
}
};
相关文章推荐
- leetcode 416 c++. Partition Equal Subset Sum
- leetcode-416-Partition Equal Subset Sum
- [LeetCode] 416 Partition Equal Subset Sum
- [Leetcode] #416 Partition Equal Subset Sum
- leetcode 416 Partition Equal Subset Sum 对半分
- LeetCode[416] Partition Equal Subset Sum
- LeetCode - 416 - Partition Equal Subset Sum
- 【Leetcode】416-Partition Equal Subset Sum -- javascript解法 01背包问题
- leetcode(416). Partition Equal Subset Sum
- [LeetCode]Partition Equal Subset Sum(Java)
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- LeetCode No.416 Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- 416. Partition Equal Subset Sum
- leetcode解题之416#Partition Equal Subset SumJava版. 对半分(0-1背包,动态规划)