当前位置: 首页 > news >正文

动态规划-背包问题——416.分割等和子集

1.题目解析

题目来源

416.分割等和子集——力扣

测试用例 

2.算法原理

1.状态表示

这里背包问题基本上和母题的思路大相径庭,母题请见 [模板]01.背包 ,这里的状态表示与装满背包的情况类似,第二个下标就是当选择的物品体积直接等于j时是否可以装入"背包",本题是求是否可以将一个数组分为大小相等的两部分,不妨变换思路,求出是否可以找一些数字的和等于该数组的一半,即

dp[i][j]:选择[1,i]区间的物品,此时总"体积"完全等于j时是否可以装入"背包"

2.状态转移方程

状态转移方程需要判断最后一个位置是否可以装入"背包",以此来判断此时位置的状态

1.当不选择当前位置:dp[i][j] = dp[i-1][j],不选择则"体积"不变,也就是j不变

2.选择当前位置:需要找到前面位置是否存在,也就是dp[i-1][j-nums[i-1]],注意判断j>=nums[i-1],不然就不能使用该位置的状态

3.初始化

开辟了虚拟位置,需要对虚拟位置进行初始化

4.填表顺序

从上到下,每一行从左到右

5.返回值 

返回最后一个位置的dp值

3.实战代码

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

代码解析 

代码优化 

 

相关文章:

动态规划-背包问题——416.分割等和子集

1.题目解析 题目来源 416.分割等和子集——力扣 测试用例 2.算法原理 1.状态表示 这里背包问题基本上和母题的思路大相径庭&#xff0c;母题请见 [模板]01.背包 &#xff0c;这里的状态表示与装满背包的情况类似&#xff0c;第二个下标就是当选择的物品体积直接等于j时是否可…...

Pr:视频过渡快速参考(合集 · 2025版)

Adobe Premiere Pro 自带七组约四十多个视频过渡 Video Transitions效果&#xff0c;包含不同风格和用途&#xff0c;可在两个剪辑之间创造平滑、自然的转场&#xff0c;用来丰富时间、地点或情绪的变化。恰当地应用过渡可让观众更好地理解故事或人物。 提示&#xff1a; 点击下…...

网络安全---安全见闻2

网络安全—安全见闻 拓宽视野不仅能够丰富我们的知识体系&#xff0c;也是自我提升和深造学习的重要途径&#xff01;&#xff01;&#xff01; 设备漏洞问题 操作系统漏洞 渗透测试视角&#xff1a;硬件设备上的操作系统可能存在各种漏洞&#xff0c;攻击者可以利用这些漏洞…...

解决因为TortoiseSVN未安装cmmand line client tools组件,导致idea无法使用svn更新、提交代码

一.错误信息 1.更新代码时&#xff1a;SVN: 更新错误 找不到要更新的版本管理目录。 2.提交代码&#xff1a;检测不到任何更新&#xff08;实际上有代码修改&#xff09;。 3.Cannot run program "svn"。 二.原因分析 在电脑上新安装的的客户端TortoiseSVN、ide…...

Ubuntu 20.04安装CUDA 11.0、cuDNN 8.0.5

不知道咋弄的ubuntu20.04电脑的cuda驱动丢了&#xff0c;无奈需装PyTorch环境&#xff0c;只有CUDA11.0以上版本才支持Ubuntu20.04&#xff0c;所以安装了CUDA11.0、cuDNN8.0.5 为防止频繁在浏览器检索对应的贴子&#xff0c;今天记录一下。 一. 驱动安装 为防止驱动安装后没…...

鸿蒙 APP 发布上架

证书创建与打包: https://developer.huawei.com/consumer/cn/doc/app/agc-help-releaseharmony-0000001933963166 不同环境多渠道打包: //todo 备案相关 一、除了发布应用商店以外,还有3个渠道,都适合小规模内测。 【1】开放式测试:发给指定白名单用户 【2】发布企业内…...

【C++笔记】C++三大特性之继承

【C笔记】C三大特性之继承 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C三大特性之继承前言一.继承的概念及定义1.1 继承的概念1.2继承的定义1.3继承基类成员访问方式的变化1.4继承类模板 二.基类和派生类间的转…...

如何在CentOS 7上搭建SMB服务

如何在CentOS 7上搭建SMB服务 因项目测试需求&#xff0c;需要自行搭建SMB服务&#xff0c;**SMB&#xff08;Server Message Block&#xff09;**协议是一种常用的文件共享方式&#xff0c;它可以让不同操作系统之间共享文件、打印机等资源。本文将带你一步步搭建一个简单的S…...

linux详解,基本网络枚举

基本网络枚举 一、基本网络工具 ifconfig ifconfig是一个用于配置和显示网络接口信息的命令行工具。它可以显示网络接口的P地址、子网掩码、MC地址等信息&#xff0c;还可以用于启动、停止或配置网络接口。 ip ip也是用于查看和管理网络接口的命令。 它提供了比ifconfig更…...

5G智能对讲终端|北斗有源终端|北斗手持机|单兵|单北斗

在当今这个快速发展的数字化时代&#xff0c;5G技术的广泛应用正以前所未有的速度推动着各行各业的变革。作为这一技术浪潮中的重要一环&#xff0c;5G智能终端QM630D凭借其卓越的性能和多样化的功能&#xff0c;在林业、渔业、安保、电力、交通等多个领域展现出了巨大的应用潜…...

第七部分:2. STM32之ADC实验--AD多通道(AD采集三路传感器模块实验:光敏传感器、热敏传感器、反射式传感器附赠温湿度传感器教程)

这个多通道采用非扫描模式--单次转换模式 1.代码配置链路图 2. ADC的输入通道 3.ADC的非扫描模式的转换模式&#xff08;单次和连续&#xff09; 4.ADC的扫描模式的转换模式&#xff08;单次和连续&#xff09; 5.采集校准 代码实验&#xff1a; 代码部分&#xff1a; #inclu…...

js.零钱兑换

链接&#xff1a;322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何…...

GitHub 上的开源项目推荐

GitHub 上的开源项目有成千上万&#xff0c;涵盖了从前端框架到数据科学、机器学习、系统工具等各个领域。不同的人根据兴趣和需求&#xff0c;可能会有不同的排名。不过&#xff0c;一些开源项目因为其广泛的应用、社区支持和技术创新&#xff0c;通常被认为是“最好”的开源项…...

实现Reactor反应堆模型:框架搭建

实现Reactor反应堆模型&#xff1a;框架搭建 Reactor模型是一种常用于处理大量并发I/O操作的设计模式&#xff0c;特别适用于服务器端的网络编程。该模型通过事件驱动的方式&#xff0c;将I/O操作的处理与具体的业务逻辑分离&#xff0c;从而提高系统的并发处理能力和响应速度…...

UE5 样条线组件(未完待续)

按点生成模型 按距离生成 spline mesh 可缩放spline mesh...

计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议

文章目录 一、TCP/IP五层模型&#xff08;重要&#xff09;二、应用层常见的协议三、TCP与UDP3.1 TCP、UDP的区别&#xff08;重要&#xff09;3.2 运行于TCP、UDP上的协议3.3 TCP的三次握手、四次挥手3.3.1 TCP的三次握手3.3.2 TCP的四次挥手3.3.3 随机生成序列号的原因 四、T…...

sql速度优化多条合并为一条语句

在 SQL 中&#xff0c;结合 CASE 和 SUM 可以实现根据特定条件进行分组求和。在 ThinkPHP 中也可以使用类似的方式进行数据库查询操作。 例如&#xff0c;假设有一个销售数据表&#xff0c;包含字段 product_id &#xff08;产品 ID&#xff09;、 quantity &#xff08;销…...

用 PHP或Python加密字符串,用iOS解密

可以使用对称加密算法&#xff08;如 AES&#xff09;来加密和解密字符串。对称加密适合这种跨平台加密解密的需求&#xff0c;因为可以使用相同的密钥和算法在不同的编程语言和系统之间进行加密和解密。 下面展示如何使用 Python 或 PHP 进行加密&#xff0c;然后用 iOS (Swi…...

docker容器启动报错error creating overlay mount to /var/lib/docker/overlay2解决办法

背景&#xff1a;客户提供的机器用于部署服务&#xff0c;拿到发现docker是部署好的&#xff0c;但是selinux没有关闭&#xff0c;于是将/etc/selinux/config中的selinux设置成了disabled&#xff0c;但是并未重启&#xff0c;就继续部署服务了&#xff1b;结果几天后客户重启服…...

人工智能在智能家居中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 人工智能在智能家居中的应用 人工智能在智能家居中的应用 人工智能在智能家居中的应用 引言 人工智能概述 定义与原理 发展历程 …...

MySQL数据库备份与恢复:全面深入指南

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。数据库作为存储和管理这些数据的核心系统&#xff0c;其安全性和稳定性至关重要。MySQL&#xff0c;作为一款广泛使用的开源关系型数据库管理系统&#xff0c;因其高性能、高可靠性和易用性而受到众多企业和开发者的青…...

前端请求后端php接口跨域 cors问题

只需要后端在网站的入口文件 一般都是 index.php 加上 这几行代码就可以了 具体的参数可以根据需要去修改 header("Access-Control-Allow-Origin: *"); header(Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS); header(Access-Control-Allow-Heade…...

【软件工程】ATAM架构权衡评估方法

ATAM架构权衡评估方法 概述质量属性有哪些&#xff1f;质量属性的效用树怎么构建&#xff1f;如何确定质量属性的优先级&#xff1f; 概述 ATAM&#xff08;Architecture Tradeoff Analysis Method&#xff09;是一种系统架构评估方法&#xff0c;由卡梅隆大学软件工程协会提出…...

MFC 重写了listControl类(类名为A),并把双击事件的处理函数定义在A中,主窗口如何接收表格是否被双击

刚接触MFC遇到的问题&#xff0c;我在主对话框的.cpp里添加了表格的双击处理事件&#xff0c;但是没用&#xff0c;试了下添加单击的&#xff0c;发现居然可以进单击的处理函数&#xff0c;就很懵逼&#xff0c;然后我就把处理双击事件的函数添加到表格的类中&#xff0c;那这样…...

c和cpp的异常处理

### 课堂讨论 **老师**&#xff1a;今天我们来深入探讨一下C的异常处理机制。想象一下&#xff0c;我们正在玩一场探险游戏。你会遇到一些意外情况&#xff0c;比如掉进陷阱。这就像我们的程序在运行中遇到错误。我们该怎么处理呢&#xff1f;&#x1f914; **学生**&#xf…...

monkey-安卓稳定性测试

一、adb执行命令 1.monkey随机事件指令&#xff1a; adb shell monkey -p com.tytu.enter --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v --throttle 300 -s 121212 --pct-syskeys 0 --pct-anyevent 0 --pct-touch 100 --pct-motion 0 100000 2&…...

【贪心算法】贪心算法三

贪心算法三 1.买卖股票的最佳时机2.买卖股票的最佳时机 II3.K 次取反后最大化的数组和4.按身高排序5.优势洗牌&#xff08;田忌赛马&#xff09; 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#…...

LeetCode 40-组合总数Ⅱ

题目链接&#xff1a;LeetCode40 欢迎留言交流&#xff0c;每天都会回消息。 class Solution {List<List<Integer>> rs new ArrayList<>();LinkedList<Integer> path new LinkedList<>();public List<List<Integer>> combinatio…...

STM32WB55RG开发(1)----开发板测试

STM32WB55RG开发----1.开发板测试 概述硬件准备视频教学样品申请源码下载产品特性参考程序生成STM32CUBEMX串口配置LED配置堆栈设置串口重定向主循环演示 概述 STM32WB55 & SENSOR是一款基于STM32WB55系列微控制器的评估套件。该套件采用先进的无线通信技术&#xff0c;支…...

误删分区数据恢复全攻略

一、误删分区现象描述 在日常使用电脑的过程中&#xff0c;我们可能会遇到一种令人头疼的情况——误删分区。这通常发生在用户对磁盘管理操作不当&#xff0c;或者在进行系统重装、分区调整时不慎删除了重要分区。误删分区后&#xff0c;原本存储在该分区的数据将无法直接访问…...

zblog搭建网站/企业网搭建

起步property 是 Python 内置的功能&#xff0c;常用来修饰类方法&#xff0c;用于已访问属性的方式调用函数。class C(object): def __init__(self): self._x Tom property def x(self): return self._x x.setter def x(self, value): s…...

手表网站功能设计/5118大数据平台官网

用Python就一定要用到界面操作&#xff0c;有一个好的用户界面&#xff0c;才会有好的用户体验&#xff0c;下边就开始创建我们的主窗口&#xff0c;并设置相应的列表框部件吧&#xff01;案例创建主窗口&#xff0c;并设置相应的列表框部件先上代码~运行效果题目详述第一行&am…...

做问卷调查的网站挣钱/网站关键词推广

第1关:JDBC更新员工密码 本关任务:借助JDBC在库名tsgc中完成对数据表employee中性别为“女”的员工密码修改为“hello”; package step1;import java.sql.*;public class UpdatePass {// 修改数据public static void updateDB() {/********* Begin *********/// 第一步:加…...

好康的网站代码/广告大全

在这个数据横流的信息时代&#xff0c;一系列企业用户数据泄密事件&#xff0c;给互联网信息安全敲响了警钟。 2011年至2014年上半年&#xff0c;乌云漏洞平台&#xff08;乌云网&#xff09;连续披露了多家互联网公司的安全漏洞&#xff0c;引发了社会各界的强烈关注&#xf…...

网络广告营销的实现方式/seo具体优化流程

我们要为路由提供请求的URL和其他需要的GET及POST参数&#xff0c;随后路由需要根据这些数据来执行相应的代码&#xff08;这里“代码”对应整个应用的第三部分&#xff1a;一系列在接收到请求时真正工作的处理程序&#xff09;。 因此&#xff0c;我们需要查看HTTP请求&#…...

小网站开发用哪些技术/今日刚刚发生的军事新闻

当百度蜘蛛去爬行互联网上的每一个URL的时候&#xff0c;它是有一套完整的过滤机制&#xff0c;言外之意&#xff0c;并非是每一个URL都是编入百度的索引库。 它会根据目标网站的信任度&#xff0c;以及内容质量&#xff0c;外部链接结构等诸多因素去衡量。 那么&#xff0c;为…...