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

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

相关推荐
爪哇部落算法小助手2 分钟前
每日两题day65
数据结构·c++·算法
麒qiqi11 分钟前
【数据结构核心篇】树与哈希(Hash)的原理、特性及实战应用
数据结构·算法·哈希算法
Swift社区12 分钟前
LeetCode 443. 压缩字符串
leetcode·职场和发展·蓝桥杯
ada7_13 分钟前
LeetCode(python)——543.二叉树的直径
数据结构·python·算法·leetcode·职场和发展
橘颂TA14 分钟前
【剑斩OFFER】算法的暴力美学——颜色分类
数据结构·c++·算法·动态规划
吴秋霖20 分钟前
profileData纯算逆向分析
算法·设备指纹·反爬虫技术
sprintzer20 分钟前
11.26-12.05力扣栈刷题
算法·leetcode·职场和发展
sin_hielo33 分钟前
leetcode 3578
数据结构·算法·leetcode
熊猫钓鱼>_>35 分钟前
PyTorch深度学习框架入门浅析
人工智能·pytorch·深度学习·cnn·nlp·动态规划·微分
ShiMetaPi1 小时前
SAM(通用图像分割基础模型)丨基于BM1684X模型部署指南
人工智能·算法·ai·开源·bm1684x·算力盒子