LeetCode416:分割等和子集

题目描述
给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

在这里插入图片描述
解题思想

    [1,5,11,5]   和为22,其中一半为 11。如果能寻找到若干数的和为11则成立
    
    可以抽象为一个0-1背包问题:容量为11的背包能否被装满
    上述的数组可以看作 重量和价值等同


    dp[j]:容量为j的背包最大价值dp[j]

    递推公式:dp[j] = max(dp[j], dp[j-weight[i]] + value[i])
    本题:dp[j] = max(dp[j],dp[j-nums[i]]+nums[i])

    遍历顺序:
        for (int i = 0; i < n; i++)
            //背包倒序遍历
            for (int j = target; j >= nums[i]; j--) {
                dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);
           }

代码

class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int target = 0;
        for (auto a : nums) target += a;
        if (target % 2 != 0) return false;
        target /= 2;

        int n = nums.size();
        vector<int> dp(target+1, 0);
        for (int i = 0; i < n; i++)
            for (int j = target; j >= nums[i]; j--) {
                dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);
            }
        return dp[target] == target;
    }
};

相关推荐

  1. leetcode:416.分割子集

    2024-05-14 12:06:05       35 阅读
  2. LeetCode 416. 分割子集

    2024-05-14 12:06:05       37 阅读
  3. Day41| 416 分割子集

    2024-05-14 12:06:05       46 阅读
  4. Day42| Leetcode 416. 分割子集

    2024-05-14 12:06:05       71 阅读
  5. 动态规划 Leetcode 416 分割子集

    2024-05-14 12:06:05       45 阅读
  6. 416. 分割子集(力扣LeetCode

    2024-05-14 12:06:05       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 12:06:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 12:06:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 12:06:05       82 阅读
  4. Python语言-面向对象

    2024-05-14 12:06:05       91 阅读

热门阅读

  1. vue router

    2024-05-14 12:06:05       24 阅读
  2. YOLOV5加入BIFPN层,助力涨点!

    2024-05-14 12:06:05       28 阅读
  3. nginx配置(多个前端)

    2024-05-14 12:06:05       31 阅读
  4. LeetCode例题讲解:781.森林中的兔子

    2024-05-14 12:06:05       25 阅读
  5. 【思维】根号分治

    2024-05-14 12:06:05       32 阅读
  6. Vue3:介绍

    2024-05-14 12:06:05       26 阅读
  7. Android 开机过程画面

    2024-05-14 12:06:05       32 阅读
  8. iOS学习- iOS获取指定月的天数

    2024-05-14 12:06:05       23 阅读
  9. vue3基于elementplus 简单实现表格二次封装

    2024-05-14 12:06:05       30 阅读