【代码随想录算法训练Day41】LeetCode 416.分割等和子集

Day41 动态规划第三天

LeetCode 416.分割等和子集

cpp 复制代码
class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum=0;

        // dp[i]中的i表示背包内总和
        // 题目中说:每个数组中的元素不会超过 100,数组的大小不会超过 200
        // 总和不会大于20000,背包最大只需要其中一半,所以10001大小就可以了
        vector<int> dp(10001, 0);
        for(int i=0; i<nums.size();i++) {
            sum+=nums[i];
        }
        // 也可以使用库函数一步求和
        // int sum = accumulate(nums.begin(), nums.end(), 0);
        if (sum%2==1) return false;
        int target=sum/2;

        // 开始 01背包
        for(int i=0; i<nums.size();i++) {
            for(int j=target;j>=nums[i];j--) {
                dp[j]=max(dp[j],dp[j-nums[i]]+nums[i]);
            }
        }
        if (dp[target]==target) return true;
        return false;
    }
};

今天只有一道题,整完再重新看一遍背包问题的详解。

相关推荐
烟囱土著9 小时前
捣鼓30天,我写了一个数学加减练习小程序
学习·算法·微信小程序·小程序
AndrewHZ9 小时前
【图像处理基石】如何用OpenCV入门计算机视觉?
图像处理·深度学习·opencv·算法·计算机视觉·机器视觉·cv
gihigo199818 小时前
matlab 基于瑞利衰落信道的误码率分析
算法
foxsen_xia18 小时前
go(基础06)——结构体取代类
开发语言·算法·golang
foxsen_xia18 小时前
go(基础08)——多态
算法·golang
leoufung18 小时前
用三色 DFS 拿下 Course Schedule(LeetCode 207)
算法·leetcode·深度优先
im_AMBER19 小时前
算法笔记 18 二分查找
数据结构·笔记·学习·算法
C雨后彩虹19 小时前
机器人活动区域
java·数据结构·算法·华为·面试
MarkHD20 小时前
车辆TBOX科普 第53次 三位一体智能车辆监控:电子围栏算法、驾驶行为分析与故障诊断逻辑深度解析
算法
苏小瀚20 小时前
[算法]---路径问题
数据结构·算法·leetcode