代码随想录算法训练营第42天|动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、416. 分割等和子集

动态规划:01背包理论基础

动态规划:01背包理论基础(滚动数组)

以上两个问题的代码未本地化保存

416. 分割等和子集

https://leetcode.cn/problems/partition-equal-subset-sum/

复杂的解法

cpp 复制代码
class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum = 0;
        for (int i = 0; i < nums.size(); i++) {
            sum += nums[i];
        }
        if (sum % 2) return false;
        vector<vector<bool>> dp(nums.size(), vector<bool>(sum / 2 + 1, false));
        for (int i = 0; i < nums.size(); i++) {
            dp[i][0] = true;
        }
        for (int j = 1; j <= sum / 2; j++) {
            if (j == nums[0]) dp[0][j] = true;
        }
        for (int i = 1; i < nums.size(); i++) {
            for (int j = 0; j <= sum / 2; j++) {
                if (j >= nums[i]) {
                    dp[i][j] = dp[i - 1][j] || dp[i - 1][j - nums[i]];
                }
                else dp[i][j] = dp[i - 1][j];
            }
        }
        return dp[nums.size() - 1][sum / 2];
    }
};

简单的解法

cpp 复制代码
class Solution {
public:
    bool canPartition(vector<int>& nums) {
        int sum = accumulate(nums.begin(), nums.end(), 0);
        if (sum % 2) return false;
        vector<int> dp(sum / 2 + 1, 0);
        for (int i = 1; i < nums.size(); i++) {
            for (int j = sum / 2; j >= 0; j--) {
                if (j >= nums[i]) {
                    dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);
                }
            }
        }
        return !(sum / 2 - dp[sum / 2]);
    }
};
相关推荐
fie88891 小时前
NSCT(非下采样轮廓波变换)的分解和重建程序
算法
晨晖21 小时前
单链表逆转,c语言
c语言·数据结构·算法
im_AMBER3 小时前
Leetcode 78 识别数组中的最大异常值 | 镜像对之间最小绝对距离
笔记·学习·算法·leetcode
鼾声鼾语3 小时前
matlab的ros2发布的消息,局域网内其他设备收不到情况吗?但是matlab可以订阅其他局域网的ros2发布的消息(问题总结)
开发语言·人工智能·深度学习·算法·matlab·isaaclab
LYFlied4 小时前
【每日算法】LeetCode 25. K 个一组翻转链表
算法·leetcode·链表
Swizard4 小时前
别再迷信“准确率”了!一文读懂 AI 图像分割的黄金标尺 —— Dice 系数
python·算法·训练
s09071364 小时前
紧凑型3D成像声纳实现路径
算法·3d·声呐·前视多波束
可爱的小小小狼4 小时前
算法:二叉树遍历
算法
d111111111d5 小时前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法
AI科技星5 小时前
质量定义方程常数k = 4π m_p的来源、推导与意义
服务器·数据结构·人工智能·科技·算法·机器学习·生活