代码随想录算法训练营第36天—动态规划04 | ● 背包问题 ● 01背包 ● 滚动数组 ● 416. 分割等和子集

背包问题

  • 常见的背包问题类型(大厂面试重点掌握01背包和完全背包即可)常见的背包问题
  • 题目描述:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品能用*次,求解怎么装物品使得装入背包里物品价值总和最大。

01背包

https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E8%83%8C%E5%8C%85-1.html
视频讲解:https://www.bilibili.com/video/BV1cg411g7Y6

  • 题目描述:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。
  • 动规五部曲
    • 二维dp数组dp[i][j]
      • 其中i代表有前 i 个物品可选,j代表背包的容量,dp值代表对应的最大价值
    • 递推公式
      • 当前 i 和 j 对应的最大价值为 装第i个物品不装第i个物品 两种情况里的较大值
      • 其中装第i个物品对应的dp值为dp[i - 1][j - weight[i]] + value[i],weight[i]表示第i个物品的重量,value[i]代表第i个物品的价值
      • 不装第i个物品对应的dp值为dp[i - 1][j]
      • dp[i][j] = max(dp[i - 1][j - weight[i]], dp[i - 1][j] + value[i])
    • 二维dp数组的初始化
      • 当把二维dp数组画图表示出来后,可以发现dp[i][j]的值仅由其上方或左上方的元素值决定,因此需要把dp数组的第一行和第一列进行初始化
      • 第一行的初始化(第一行对应只有物品1和背包容量递增的情况):由于是01背包,所以在背包容量 < 物品1重量时,初始化为0,当背包容量 >= 物品1重量时,均初始化为物品1的价值
      • 第一列的初始化(即物品由少到多但背包容量为0的情况):全部初始化为0
    • 遍历顺序
      • 内外层for循环是先遍历物品还是背包容量都可以,因为二维数组图里无论哪种遍历方式都满足当前元素的上方和左上方元素已有值
      • 每层for循环从小到大遍历
    • 无需打印



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

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

相关文章

Echarts 报提示 There is a chart instance already initialized on the dom.

问题原因&#xff1a; 每次执行 Echarts图例方法都会拿到相关的dom元素执行Echarts图例初始化操作 但是每次执行的时候拿到的dom元素又是相同的&#xff0c;Echarts初始化执行的时候检查到这个dom上面已经有了一个 图表了 就不会再重新拿到这个dom元素执行初始化操作 解决方案&…

Vue.js数据绑定解密:深入探究v-model和v-bind的原理与应用

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; Vue.js数据绑定解密&#xff1a;深入探究v-model和v-bind的原理与应用 一、引言 Vue.…

如何打sap NOTE

文章目录 1 Introduction2 Method2.1 search note2.2 download note2.3 upload note 3 Summarry 1 Introduction SAP Notes is a set of instructions to remove known errors from the SAP systems. Using the Note Assistant tool, SAP Notes can be applied to the system.…

云服务器Linux环境部署mall电商项目完整实践教程

云服务器Linux环境部署mall电商项目完整实践教程 引言JDK8 安装Docker 环境安装MySQL安装rpm 包安装 Mysql5.7 Redis 安装RabbitMQ 安装ElasticSearch 与 Kibana 安装MongoDB安装Nacos 安装安装 Nginx 服务部署后端SpringCloud微服务jar包站点效果结语阿里云服务器推荐 引言 在…

文献阅读:DEA-Net:基于细节增强卷积和内容引导注意的单图像去雾

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;DEA-Net&#xff1a;基于细节增强卷积和内容引导注意的单图像去雾1、研究背景2、方法提出3、相关知识3.1、DEConv3.3、多重卷积的…

python 基础知识点(蓝桥杯python科目个人复习计划61)

今日复习内容&#xff1a;想到什么复习什么 因为比赛用到的编辑器是IDLE&#xff0c;所以从现在开始&#xff0c;我就不用pycharm了。 例题1&#xff1a; 从1到2020的所有数字中&#xff0c;有多少个2&#xff1f; 这个题是一个填空题&#xff0c;我用的方法是先在编辑器上…

python自动化测试如何做数据缓存 ?这个第三方包推荐给你,方便又简单!

1.数据缓存说明 数据缓存可以说也是项目开发中比不可少的一个工具 &#xff0c;像我们测试的系统中 &#xff0c;你都会见到像Redis一样的数据缓存库 。使用缓存数据库的好处不言而喻&#xff0c;那就是效率高 &#xff0c;简单数据直接放在缓存中 &#xff0c;存取简单方便 。…

好物周刊#47:快捷启动器

https://github.com/cunyu1943 村雨遥的好物周刊&#xff0c;记录每周看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;每周五发布。 一、项目 1. Tianji All-in-One 的数据洞察中心&#xff0c;同时具备网站分析器 状态监控器 服务状态上报的功能。 2. Ip2…

论文笔记:Efficient Training of Language Models to Fill in the Middle

导语 Decoder-only的模型只能从左向右看&#xff0c;无法利用双向信息完成填空等操作&#xff0c;本文是OpenAI最早提出使用Fill-in-the-model到Autoregressive形式的模型中的文章&#xff0c;启发了后面一些Text-to-Code的大模型&#xff0c;比如InCoder&#xff0c;SantaCod…

Linux下下载安装JDK配置Java环境变量

Linux下下载安装JDK配置Java环境变量 1. 下载JDK 下载链接&#xff1a;(https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) 2. 上传至服务器并解压 可通过shell工具进行上传&#xff0c;我这里是上传安装在/opt目录 解压jdk-17.0.10_linux-x64_b…

Nacos注册中心的部署及使用(超详细)

目录 1 前言 2 注册中心的原理 3 Linux上Nacos的部署 3.1 Mysql的部署 3.2 存储Nacos数据的数据库的建立 3.3 准备Nacos的环境文件 3.4 部署Nacos 3.5 检查是否成功 3.5.1 查看日志 3.5.2 访问Nacos 4 Java中的配置及食用方法 4.1 引入依赖坐标 4.2 配置Nacos 4…

苍穹外卖学习-----2024/03/09

1.菜品分页查询 代码在这里 分页查询菜品 2.删除菜品 [链接]param 1、概览 本文将带你了解 Spring 中 RequestParam 注解的用法。 简单地说&#xff0c;可以使用 RequestParam 从请求中提取查询参数、表单参数甚至是多个参数。 2、示例端点 假设我们有一个端点 /api/foos&a…