[动态规划] 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 (sum % 2)return false;
        sum /= 2;
        vector<vector<bool>> dp(n, vector<bool>(sum + 1, false));
        for (int i = 0; i < n; i++)
            dp[i][0] = true;

        if(nums[0] <= sum) dp[0][nums[0]] = true;
        for (int i = 1; i < n; i++) {
            for (int k = nums[i]; k <= sum; k++)
            {
                dp[i][k] = dp[i - 1][k];
                int num = k - nums[i];
                dp[i][k] = dp[i][k] | dp[i - 1][num];
            }
            if (dp[i][sum]) return true;
        }

        return false;
    }
};

原文地址:https://www.cnblogs.com/fish1996/p/11326551.html

时间: 2024-10-09 18:42:55

[动态规划] leetcode 416 Partition Equal Subset Sum的相关文章

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

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

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_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

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

[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

算法-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

原题链接在这里: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