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

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

相关推荐
BadCherry1 小时前
代码随想录第二十天:动态规划、斐波那契数列、爬楼梯、最小体力爬楼梯
算法·动态规划
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-25
人工智能·深度学习·算法·语言模型·自然语言处理
"Return"1 小时前
美团2024年秋招第一场笔试算法题题解【技术】
java·c++·python·算法
DA树聚1 小时前
人工智能-机器学习-深度学习-分类与算法梳理
人工智能·深度学习·算法·机器学习·语言模型·分类·transformer
lsnm1 小时前
<刷题笔记> 力扣105/106题 使用中序+前(后)序构造二叉树
c++·笔记·b树·算法·leetcode
蔚一1 小时前
Java算法每日一题——搜索插入位置
java·开发语言·数据结构·算法·leetcode·intellij-idea
菜鸟求带飞_2 小时前
算法打卡:第十一章 图论part06
java·数据结构·算法
Kkkuu..2 小时前
代码随想录Day17 图论-2
c++·leetcode·图论
卧蚕土豆2 小时前
【有啥问啥】多臂老虎机(Multi-Armed Bandit,MAB)算法详解
算法
luthane2 小时前
python 实现harmonic series调和级数算法
开发语言·python·算法