【代码随想录算法训练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;
    }
};

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

相关推荐
拓恒技术8 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨9 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫9 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
文丑颜不良啊10 小时前
LeetCode876~900题目解析
java·leetcode
罗西的思考11 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
淡海水11 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
下一站春风里12 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
DRobot13 小时前
【机械制图与CAD实战(二十五)】螺纹的表示方法
算法·机械制图
用户老李13 小时前
卡尔曼滤波自学教程 10:无迹卡尔曼滤波(UKF)
算法
深圳市益普科技有限公司14 小时前
半导体良率管理YMS:良率与设备参数的相关性,先拉哪几组数据
人工智能·python·算法