【LeetCode热题100】【动态规划】分割等和子集

题目链接:416. 分割等和子集 - 力扣(LeetCode)

判断数组能否被分成两个和相等的子数组,先求数组的和sum,即变成能不能找到一个组合的和是sum/2,每个数最多只能被选择一次,即0-1背包问题

0-1背包状态转移方程:如果选择,那么空间减少,价值增加,dp[i]为空间为i的最大价值

dp[j]=max(dp[j],dp[j-weight[i]]+value[i])

本问题:dp[i]为是否存在和为i的子集,如果选择当前元素,变成是否存在和为i-num的子集

dp[i]=dp[i] || dp[i-num]

特别注意如果sum是奇数,那么sum/2不是整数肯定不存在

class Solution {
public:bool canPartition(vector<int> &nums) {int sum = 0;for (auto &num: nums)sum += num;if (sum & 1)return false;int target = sum / 2;vector<bool> dp(target + 1);dp[0] = true;for (auto &num: nums) {for (int i = target; i >= num; --i) {dp[i] = dp[i] || dp[i - num];}}return dp[target];}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CB2-2CARD之Debian(Bookworm)安装Gnome看CCTV

CB2-2CARD之Debian&#xff08;Bookworm&#xff09;安装Gnome看CCTV 1. 源由2. 需求3. Debian系统桌面3.1 系统安装3.2 磁盘扩容3.3 系统更新3.4 Gnome安装 4. 测试4.1 CCTV网页测试4.2 系统空闲测试4.3 Firefox CPU占用率测试 5. 总结 1. 源由 近些年来&#xff0c;随着国内…

python Django中分配库存给用户包括定义库存模型、用户模型、以及一个用于分配库存的逻辑

在Django中分配库存给用户通常涉及几个步骤&#xff0c;包括定义库存模型、用户模型、以及一个用于分配库存的逻辑。以下是一个基本的示例来说明如何执行这个过程&#xff1a; 1. 定义模型 首先&#xff0c;你需要定义两个模型&#xff1a;一个是User模型&#xff08;可以使用…

【学习笔记】Vue3源码解析:第五部分 - 实现渲染(3)

课程地址&#xff1a;【已完结】全网最详细Vue3源码解析&#xff01;&#xff08;一行行带你手写Vue3源码&#xff09; 第五部分-&#xff1a;&#xff08;对应课程的第36 - 37节&#xff09; 第36节&#xff1a;《处理proxy&#xff0c;方便取值》 1、执行组件中的 render 方…

Golang 开发实战day11 - Pass By Value

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day11 - 按值…

C语言笔试题

想成为嵌入式程序员应知道的0x10个基本问题:预处理器&#xff08;Preprocessor&#xff09; 1 . 用预处理指令#define 声明一个常数&#xff0c;用以表明1年中有多少秒&#xff08;忽略闰年问题&#xff09; #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想…

码随想录-算法训练营day20【二叉树06:最大二叉树、合并二叉树、二叉搜索树中的搜索、验证二叉搜索树】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第六章 二叉树 part06 今日内容 ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树 详细布置 654.最大二叉树 又是构造二叉树&#xff0c;昨天大家刚刚做完 中序后序确定二叉树…

详细解读DreamFusion

DreamFusion是Google推出的一项创新技术&#xff0c;旨在通过文本驱动的方式生成高质量的3D内容&#xff0c;这项技术对于游戏开发、元宇宙构建、3D设计等领域具有重要意义。以下是DreamFusion的关键特点和工作原理的详细解读&#xff1a; 工作原理 文本到图像生成模型&#…

vector的底层与使用

前言&#xff1a;vector是顺序表&#xff08;本质也是数组&#xff09; 文档参考网站&#xff1a;https://legacy.cplusplus.com/reference/vector/vector/vector/ //底层代码 #include<assert.h> #include<iostream> #include<vector> #include<string&g…

第二部分-Foundation基础-学习导航

专题地址&#xff1a;MacOS一站式程序开发系列专题 第一部分&#xff1a;基础入门-学习导航 ObjectiveC-第一部分-基础入门-学习导航 第二部分&#xff1a;Foundation基础学习导航 Foundation框架-13-数据对象&#xff1a;主要讲述NSRange, NSString, NSValue, NSNull, NSD…

模型量化技术

量化(Quantization)技术专注于用较少的信息表示数据&#xff0c;同时尽量不损失太多准确性。 具体来说&#xff0c;量化会将模型参数使用的数据类型&#xff0c;转换为更少位数表示&#xff0c;并尽可能达到相同信息的效果。 例如&#xff0c;假设您的模型权重原始以32位(32-b…

CFCASSL证书的网络安全解决方案

在数字化时代&#xff0c;网络信息安全的重要性不言而喻。随着电子商务、在线交易、远程办公等互联网活动的日益普及&#xff0c;确保数据传输的安全性与隐私保护成为企业和用户共同关注的焦点。在此背景下&#xff0c;CFCA SSL证书作为一种权威、高效的网络安全解决方案&#…

[LitCTF 2023]PHP是世界上最好的语言!!、 [LitCTF 2023]Vim yyds、 [羊城杯 2020]easycon

目录 [LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; [LitCTF 2023]Vim yyds [羊城杯 2020]easycon [LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; 无参&#xff0c;根据题目提示看看php能否执行——返回1执行成功 用system()函数调用、执行ls …

C++教你如何模拟实现string,如何实现string写时拷贝

文章目录 前言成员变量默认成员函数默认构造函数拷贝构造函数析构函数赋值运算符重载 容量相关函数&#xff08;Capacity&#xff09;reserve函数resize函数size函数capacity 函数clear函数 修改函数&#xff08;Modifiers&#xff09;swap函数insert函数字符插入字符串插入 ap…

LRU缓存(哈希+双链表)

题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;…

基于docker搭建瀚高数据库HighGo6.0.1【图文】

基于docker搭建瀚高数据库HighGo6.0.1 拉取镜像启动验证进入容器 登录数据库查看数据库加密方式修改加密方式为sm3进入数据库修改密码重启容器 数据库验证数据库密码到期参考 docker部署 https://blog.csdn.net/weixin_44385419/article/details/127738868 拉取镜像 docker p…

【Java】变量零基础教程

目录 一、引言 二、基本组成单位 三、变量的基本原理 四、变量的基本使用步骤 五、变量快速入门 六、变量使用的注意事项 一、引言 为什么需要变量&#xff1f; ​​​​​​一个程序就是一个世界。 大家看下图&#xff0c;是我们现实中的一张生活照&#xff0c;图里有树…

spring aop介绍

Spring AOP&#xff08;面向切面编程&#xff09;是一种编程范式&#xff0c;它允许开发者将横切关注点&#xff08;cross-cutting concerns&#xff09;从业务逻辑中分离出来&#xff0c;从而提高代码的模块化。在传统的对象导向编程中&#xff0c;这些横切关注点&#xff0c;…

Yarn 安装与配置:简化 JavaScript 项目依赖管理

在现代 JavaScript 项目开发中&#xff0c;管理依赖项是一项关键任务。Yarn 作为 Facebook、Google、Exponent 和 Tilde 联合推出的 JavaScript 包管理工具&#xff0c;以其快速、可靠和安全的特性&#xff0c;赢得了开发者的广泛青睐。本文将引导您在主流操作系统上安装 Yarn&…

ic基础|时序篇:握手协议valid和ready的时序优化

大家好&#xff0c;我是数字小熊饼干&#xff0c;一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结&#xff0c;并通过汇总成文章的形式进行输出&#xff0c;相信无论你是在职的还是…

Maven的常用基本命令

Maven是一个Java项目的构建和依赖管理工具&#xff0c;它有一系列命令用于项目的构建、清理、安装、部署等操作。以下是一些Maven的常用命令及其详细解释与举例&#xff1a; 1.mvn clean 功能&#xff1a;清理项目构建过程中生成的中间文件和目标目录&#xff08;target&…