LC 416. 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: 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.

参考答案

 1 class Solution {
 2 public:
 3     bool canPartition(vector<int>& nums) {
 4         int sum = accumulate(nums.begin(),nums.end(),0); //首先对数组求和
 5         if( sum & 1 ){ // 如果数组是个奇数,那么不成立,因为例如: 5 = 2+3
 6             return false;
 7         }
 8         int half = sum / 2;
 9         std::sort(nums.begin(),nums.end(),std::greater<int>()); // 一定要加,否则time limit exceeded
10         return foo(nums,half,0); // 将 half 作为输入
11     }
12
13     bool foo(vector<int>& nums, int half, int index){
14         for(int i = index ; i <nums.size() ; i++){ // 对于每一个数进行迭代
15             int h = half - nums[i]; // 对 half 扣除
16             if(h<0) return false;
17             if(h==0) return true;
18             // 如果上述条件都不满足,说明nums[i] 没办法满足条件,那么需要继续找下一个数,20        // 即index = i+1。满足即true,不满足就退回到上层,在这一层找下一个数。
19             if(foo(nums,h,i+1) == true) return true;
20         }
21         return false;
22     }
23 };

原文地址:https://www.cnblogs.com/kykai/p/11568399.html

时间: 2024-10-29 00:53:59

LC 416. Partition Equal Subset Sum的相关文章

LN : leetcode 416 Partition Equal Subset Sum

lc 416 Partition Equal Subset Sum 416 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: Each of th

Leetcode 416. Partition Equal Subset Sum

416. 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: Each of the array element will not exceed 1

416. Partition Equal Subset Sum

Problem statement: 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

[动态规划] leetcode 416 Partition Equal Subset Sum

problem:https://leetcode.com/problems/partition-equal-subset-sum/ 经典背包问题.找到是否存在恰好装满sum / 2的物体,可以优化为1D的. class Solution { public: bool canPartition(vector<int>& nums) { int n = nums.size(); int sum = accumulate(nums.begin(), nums.end(), 0); if (s

算法-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. 样例: Given nums = [

[LeetCode] 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: Both the array size and each of the array element will not exceed 100. Exam

LeetCode Partition Equal Subset Sum

原题链接在这里:https://leetcode.com/problems/partition-equal-subset-sum/description/ 题目: 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.

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: Each of the array element will not exceed 100. The array size will not exce

[LeetCode] 416. Partition Equal Subset Sum_Medium tag: backpack

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 exce