代码随想录训练营day35|46. 携带研究材料,416. 分割等和子集

news2024/12/23 22:55:17

46. 携带研究材料

思路:用一个数组来记录?dp[i]=带i件物品的最大价值

好吧,这里用的是一个二维数组dp[i][j],表示从[0,i]的物间任选武平,能用容量为j的背包装下的最大价值
重量 价值
物品0 1 15
物品1 3 20
物品2 4 30
在这里插入图片描述
先考虑从[0,0]区间内的物品,容量为0时无法装,价值为0,物品0占用空间为1,所以1及以后价值为15
在这里插入图片描述
再来看[0,1]区间内的物品。容量为1,2时价值为5,(此时不装物品1,延续dp[i-1][j]),容量为3时,价值为20(装了它背包剩余空间为j-3)剩余空间的最大价值是dp[i][j-weigh[j]],

所以dp[i][j]有两种选择,要么不放第i件物品,价值是dp[i-1][j];
要么放第i件物品,那剩余空间是j-weight[j],该空间最大价值dp[i][j-weigh[j]],加上value[i]。
dp[i][j]=max(dp[i-1][j],dp[i][j-weight[i]+value[i])

草,刚刚找了半个小时问题在哪里,原来是dp[i-1][j-weight[i]]+value[i]

滚动数组的写法

因为上一个二维数组的每一行其实都在用上一行的数据,所以可以直接写一个一维数组,不断更新它。
dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);
但要注意,现在第j列需要用到它左边的数,但需要的是没被覆盖过的数据,而不是已经装入物品的数据,所以遍历顺序应该从右向左

for(int j=m;j>=0;j--){        
if(j-weight[i]>=0)
    dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
else
    dp[j]=dp[j];
}

416. 分割等和子集

思路:肯定先剪枝啦,和为奇直接false。j代表当前的体积。i表示当前可以任选的元素有[0,i]。dp[i][j]表示当前选择的和

dp[i][j]有两种选择
dp[i][j]=dp[i-1][j];//不装第i个数
dp[i][j]=nums[i]+dp[i-1][j-1];装了第i个数。
但如何选择呢??
好吧是这样理解的:
背包的体积为sum / 2
背包要放入的商品(集合里的元素)重量为 元素的数值,价值也为元素的数值
背包如果正好装满,说明找到了总和为 sum / 2 的子集。
背包中每一个元素是不可重复放入。
所以每个地方只有选了max。背包空间为sum/2的地方才有可能装满
(超了的不会装进去)

		for(int i=1;i<n;i++){
            for(int j=1;j<sum/2+1;j++){
                if(j-nums[i]>=0){//能放nums[i]进来,则当前容量一定要比他大。
                    dp[i][j]=max(dp[i-1][j],nums[i]+dp[i-1][j-nums[i]]);
                }
                else
                    dp[i][j]=dp[i-1][j];
                if(dp[i][j]==sum/2)
                    return true;
            }
        }
        return false;

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

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

相关文章

AI绘画|Stable Diffusion高质量提示词收集(附提示词手册以及提示词插件)

使用平台:comfyui 模型:AlbedoBase-XL 图片尺寸:768x1280 提示词万字手册&#xff0c;可以扫描下方&#xff0c;免费获取 图1 提示词 an attractive rough cyborg woman with a serious look in her eyes, messy conceptual felt-tip pen (drawing:1.3) by (Yoji Shinkawa:…

“三年级英语”暴增5亿搜索量?需求来了!附2个极品AI吸粉玩法!

家人们&#xff01;在英语细分领域&#xff0c;一直都是付费知识中的风口黄金大赛道。 而这两天“英语”这个关键词&#xff0c;在微信指数上的日搜索量突然猛增到5个亿。 这两天全网热词“三年级英语”&#xff0c;日环比搜索指数更是486.2%增长率&#xff0c;一天时间内就增…

vsftpd的安装和配置

目录 vsftpd的下载与配置 下载vsftpd vsftpd的配置 测试服务的功能 vsftpd的下载与配置 下载vsftpd rpm -qc vsftpd&#xff0c;检查vsftpd安装包是否存在&#xff0c;存在则不需要安装。 yum install -y vsftpd&#xff0c;不存在则yum安装vsftpd。 安装成功 vsftpd的…

早上醒来嗓子干、喉咙痛、咳嗽……快用这个润养好物,给嗓子做个spa,让身体润起来~

进入秋季&#xff0c;很多人出现了眼睛干涩、大便干燥、嘴唇干裂、咽喉疼痛等症状&#xff0c;虽说这些还能够忍受&#xff0c;但它却影响了正常的饮食和休息。 秋季气候干燥&#xff0c;外界燥邪侵犯肺部&#xff0c;易伤津液&#xff0c;肺失滋润&#xff0c;清肃失司&#x…

宣布 Vue 3.5 版发布

宣布 Vue 3.5 版发布 今天我们很高兴地宣布 Vue 3.5 版“天元突破红莲螺岩”正式发布&#xff01; 这一小版本发布没有破坏性更改&#xff0c;包括内部改进和一些有用的新特性。我们将在这篇博客中介绍一些亮点 - 详细的更改和新特性请查阅 GitHub 上的完整变更日志。 响应式…

单片机上搭配的SPI NOR FLASH容量告急!扩容新选择

文章目录 前言&#xff1a;正文&#xff1a; 为便于理解并省去容量单位转换的麻烦&#xff0c;以下容量单位均使用Byte单位&#xff08;128Mbit16MByte&#xff09; 前言&#xff1a; NOR FLASH 是市场上两种主要的非易失闪存技术之一。Intel于1988年首先开发出NOR Flash 技术…

代码审计总结

代码审计总结 概述 一、代码审计 1.1什么是代码审计&#xff1f; 1.2为什么要执行代码审核&#xff1f; 1.3代码审计的好处 二、代码审计流程 2.1代码检查方法 2.2代码检查项目 2.3编码规范 2.4代码检查规范 2.5缺陷检查表 2.6代码审计复查 2.7代码审计结果总结 三…

由一个 SwiftData “诡异”运行时崩溃而引发的钩深索隐(一)

概述 从 WWDC 23 开始&#xff0c;苹果推出了全新的数据库框架 SwiftData。它借助于 Swift 语言简洁而富有表现力的特点&#xff0c;抛弃了以往数据库所有的额外配置文件&#xff0c;只靠纯代码描述就可以干脆利索的让数据库的创建和增删改查&#xff08;CRUD&#xff09;一气…

10分钟了解OPPO中间件容器化实践

背景 OPPO是一家全球化的科技公司&#xff0c;随着公司的快速发展&#xff0c;业务方向越来越多&#xff0c;对中间件的依赖也越来越紧密&#xff0c;中间件的集群的数量成倍数增长&#xff0c;在中间件的部署&#xff0c;使用&#xff0c;以及运维出现各种问题。 1.中间件与业…

CAD图纸防泄密有哪些方法?五个防泄密方法分享

CAD图纸作为工程设计的重要资料&#xff0c;其防泄密工作至关重要。以下将分享五个有效的CAD图纸防泄密方法&#xff0c;旨在确保图纸的安全性和机密性。 1. 使用CAD软件自带的加密功能 大多数CAD软件&#xff0c;如AutoCAD&#xff0c;都内置了加密功能。在保存CAD图纸时&am…

MySQL主从复制(Linux篇)

1.概述 MySQL的主从复制&#xff08;Master-Slave Replication&#xff09;是一种数据复制解决方案&#xff0c;将主数据库的DDL和DML操作通过二进制日志传到从库服务器中&#xff0c;然后在从库上对这些日志重新执行&#xff08;也叫重做&#xff09;&#xff0c;从而是的从库…

MES系统:现代工厂生产车间的科技与管理创新

一、现代工厂生产车间&#xff1a;高度集成、自动化与智能化 在当今这个日新月异的工业时代&#xff0c;工厂生产车间已经远远超越了传统意义上的简单生产线概念&#xff0c;它们正逐步演变为一个高度集成、自动化与智能化的生态系统。这一变革不仅极大地提升了生产效率&#…

实战项目:俄罗斯方块(七)

文章目录 &#x1f34a;自我介绍&#x1f34a;图形存储及输出设置类型设计图形输出代码设计要实现的结果展示user_global.c(全局变量的C文件)user_print.huser_print.cmain.c 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一…

股指期货与股指期权为什么是熊市中的风险管理利器?

在如今波动剧烈的熊市环境中&#xff0c;期货市场的多空双边机制和T0的交易制度显得尤为灵活和必要。对于投资者而言&#xff0c;利用期货市场对冲股票现货风险成为了一种重要的策略。在期货市场中&#xff0c;股指期货、股指期权以及股票期权是三大得力工具&#xff0c;它们为…

Windows下安装ELK8(elasticsearch、logstash、kibana)及相关工具插件

目录 概述 ELK简介 安装elasticsearch 下载elasticsearch 解压 配置不用登录及关闭SSL 启动elasticsearch 访问elasticsearch 安装elasticsearch-head 提前准备node.js 下载elasticsearch-head 解压 浏览器打开index.html 安装kibana 下载kibana 解压 运行kib…

渠道招商经理岗位职责和任职要求?

渠道经理&#xff0c;作为企业与投资者之间的沟通桥梁&#xff0c;角色是非常重要。 作为一名手工酸奶品牌的创始人&#xff0c;我一直扮演渠道招商经理的角色&#xff0c;我来为大家分享职责和任职要求&#xff01; 一、渠道经理的职责&#xff01; 1、渠道开发 负责公司渠…

Vue3+TypeScript+Vite集成mars3d.layer.WeiVectorTileLayer加载本地shp文件

前景提要&#xff0c;在新建的vite项目中&#xff0c;想要实现mars3d的矢量瓦片方式加载geojson数据。加载本地shp文件。 代码说明&#xff1a; 1.在项目中集成mars3d后&#xff0c;构造map后开始在map上增加读取数据的操作&#xff1a; mars3d.Util.fetchJson({ url: "…

Git学习尚硅谷(003 git分支操作)

尚硅谷Git入门到精通全套教程&#xff08;涵盖GitHub\Gitee码云\GitLab&#xff09; 总时长 4:52:00 共45P 此文章包含第15p-第p18的内容 文章目录 git分支操作分支介绍分支的好处 分支的操作查看分支创建分支切换分支&修改分支合并分支正常合并分支冲突合并 git分支操作…

10,sql约束(2)

MySQL中primary key和unique的区别 在sql、oracle中的constrain有两种约束&#xff0c;都是对列的唯一性限制&#xff1a;unique与primary key&#xff0c;它们的区别如下&#xff1a; 1、unique key要求列唯一&#xff0c;但不包括Null字段&#xff0c;也就是约束的列可以为空…

docker制作达梦数据库驱动的Python镜像记录

docker制作达梦数据库驱动的Python镜像记录 使用Sqlalchemy ORM 操作达梦 提供构建好的docker镜像 docker pull chongjing001/python:3.12 使用虚拟环境(source /venv/bin/activate) 后pip其他库 镜像中安装Python参考上一篇 下载DM8安装包 版本选择 官网 Linux安装包只有 r…