【leetcode】完全背包总结

本文内容参考了代码随想录,并进行了自己的总结。

完全背包

关键点

● 每件物品有若干种状态:不选、选 1 件、选 2 件、…、选 n 件

代码

在代码上,只有重量的遍历方向和 01 背包不一样:

for(int i = 0; i < nums.length; i ++ )for(int j = nums[i]; j <= W; j ++ ) {dp[j] = Math.max(dp[j], dp[j - nums[i]);}

正序遍历,意味着每件物品可以选多次,一直往后叠加。

题目

问能装的最大容量,或者问能不能装满的这种题目,属性既是重量又是价值。

下面是代码随想录中,完全背包问题的总结。

题目问题转换属性拆解
518. 零钱兑换 II

完全背包
恰好装满,求组合方案数

备注:
组合方案数,就是装的数的顺序不影响结果。比如 3 = 1 + 2 和 3 = 2 + 1 是同一种方案
给定背包容量amount,从coins中选若干个物品放入背包,问能装满的组合方案数背包容量:amount。
物品体积:由于是选若干个硬币出来让他们的金额和等于 amount,所以物品的大小(体积)就是硬币金额。
物品价值:这一题没有价值这个维度,只是问背包装满的方案数。
物品数量:每个硬币可以选无数次。
377. 组合总和 Ⅳ

完全背包

恰好装满,求排列方案数
从nums中选若干个数,每个数可重复选择,放入容量为 target的背包,问放满的排列方案数。背包容量:target。
物品体积:由于是选若干个数字出来让他们的和等于 target,所以物品的大小(体积)就是数值大小。
物品价值:这一题没有价值这个维度,只是问背包装满的方案数。
物品数量:每个数字可以选无数次。
https://kamacoder.com/problempage.php?pid=1067

完全背包
恰好装满,求排列方案数
从[1, m]中,选若干个数,每个数可选无数次,放入大小为n的背包,问放满的排列方案数背包容量:n。
物品体积:由于是选若干个数字出来让他们的和等于 n,所以物品的大小(体积)就是数值大小。
物品价值:这一题没有价值这个维度,只是问背包装满的方案数。
物品数量:每个数字可以选无数次。
322. 零钱兑换

完全背包
恰好装满,求最小价值
给定n个数,选若干个数,每个数无限取,求能放满背包的最少数的个数。

给定n个数,选若干个数,每个数无限取,求恰好装满时,最小价值为多少?
背包容量:n。
物品体积:由于是选若干个数字出来让他们的和等于 n,所以物品的大小(体积)就是数值大小。
由于是求最少数的个数,所以每个数的价值就是 1。
物品数量:每个数字可以选无数次。
279. 完全平方数

完全背包
恰好装满,求最小价值
从[1, sqrt(n)]中选若干个数,每个数可选无数次,将其平方放入大小为n的背包中,求能放满的最少数量

从[1, sqrt(n)]中选若干个数,每个数可选无数次,将其平方放入大小为n的背包中,求恰好装满时,最小价值为多少?
背包容量:n。
物品体积:由于是选若干个数字出来让他们平方的和等于 n,所以物品的大小(体积)就是数值大小。
物品价值:由于是求最少数的个数,所以每个数的价值就是 1
物品数量:每个数字可以选无数次。
139. 单词拆分

完全背包
按顺序恰好装满,求是否存在方案
从n个字符串中选若干个字符串,每个字符串可重复使用,拼成长度为s.length()的字符串,问是否能拼成?

从n个物品中选若干个物品,每个物品可重复使用,放入大小为s.length()的背包,问是否能装满?

这n个物品是有顺序的,即必须按照一定的顺序拼成字符串s,所以求的是是否存在一种排列能够拼成字符串s,所以遍历顺序应该先遍历长度
背包容量:s.length()。
物品体积:由于是选若干个字符串出来让他们的长度等于 n,所以物品的大小(体积)就是数值大小。
物品价值:这一题没有价值这个维度,只是问背包装满是否存在方案。
物品数量:每个字符串可以选无数次。
  1. 单词拆分其实是的377. 组合总和 Ⅳ的子问题。

相同点:

  • 每个字符串相当于每个数字,都是物品
  • 每个字符串的长度相当于每个数字的数值大小,都是物品的大小

不同点:

    1. 单词拆分问题问的是,是否存在一种特定的排列能装满背包?这个特定的排列装满背包,就是指按照顺序拼接字符串。而给定的字符串 s 就表明了,字符串一定要按照这个顺序拼接
    1. 组合总和 Ⅳ问题问的是,能装满背包有多少种不同的排列方案,即任意一种放入的顺序都算一种方案

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

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

相关文章

echarts中绘制3D三维地球

简介 echarts中的三维地球&#xff0c;需要用到世界地图json数据&#xff0c;我把json文件放到我的资源中&#xff0c;有需要的自行下载。 安装插件 // 安装echats npm install echarts --save npm install echarts-gl --save 项目中引用 1&#xff0c;引入安装的echarts…

Three.js学习2:页面引入 Three.js

一、关于 Three.js 的版本 随着页面3D化应用越来越多&#xff0c;近两年 Three.js 处于飞速发展之中。现在 Three.js 几乎每个月都会发布一个新的版本&#xff0c;会增加新的 API&#xff0c;废掉一些旧的功能之类的。 可以从 Three.js 官网 Three.js – JavaScript 3D Libra…

【gcc】webrtc发送侧 基于丢包更新码率

参考大神的分析1 rtt 有问题:网络拥堵,直接下调码率 G:\CDN\rtcCli\m98\src\modules\congestion_controller\goog_cc\send_side_bandwidth_estimation.hRttBasedBackoff RttBasedBackoff rtt_backoff_;class RttBasedBackoff {public:explicit RttBasedBackoff(const WebRtcK…

C#代码添加脚本头

目录 前言 代码展示 前言 创建脚本的时候添加脚本的介绍 代码展示 using System.IO;/// <summary> /// 创建脚本自动添加头注 /// </summary> public class CommentFirst : UnityEditor.AssetModificationProcessor {/// <summary>/// 在资源创建生成.me…

【linux】校招中的“熟悉linux操作系统”一般是指达到什么程度?

这样&#xff0c;你先在网上找一套完整openssh升级方案&#xff08;不是yum或apt的&#xff0c;要源码安装的&#xff09;&#xff0c;然后在虚拟机上反复安装测试&#xff0c;直到把他理解了、背下来。 面试的时候让你简单说说linux命令什么的&#xff0c;你就直接把这个方案…

基于SpringBoot开发的校刊投稿系统[附源码]

基于SpringBoot开发的校刊投稿系统[附源码] &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#x1f…

Nicn的刷题日常之打印菱形

目录 1.题目描述 2.解题思路 3.解题 1.题目描述 用C语言在屏幕上输出以下图案&#xff1a; 2.解题思路 仔细观察图形&#xff0c;可以发现&#xff0c;此图形中是由空格和*按照不同个数的输出组成的。 上三角&#xff1a;先输出空格&#xff0c;后输出*&#xff0c;每…

maven工程的依赖介绍(2023版idea--2024年最全最详细)

搭建maven工程 我们在右上角打开对应的设置结构之后 然后我们进行对应的maven仓库以及路径配置 然后新建项目 然后我们构建系统选择对应的maven就可以啦 maven依赖管理 我们配置对应的依赖文件是针对的pom.xml文件 也就是这个结构&#xff0c;真正的是groupid到version这三个…

【Java】面向小白的Spring Framework注解开发学习笔记

目录 简介 IoC&DI 纯注解实现 定义 Bean Bean 的作用范围和生命周期管理 依赖注入 管理第三方 Bean 为第三方 Bean 注入资源&#xff08;例如数据库连接池&#xff09; AOP 纯注解实现 工作流程 切面示例 切入点表达式示例 通知类型示例 Before&#xff08;…

谷粒商城【成神路】-【3】——三级分类

目录 &#x1f37f;1.查询三级分类 &#x1f9c2;2.前端页面搭建 &#x1f35f;3.添加网关 &#x1f373;4.解决跨域 &#x1f9c7;5.显示分类 &#x1f95e;6.显示复选框 1.查询三级分类 1.controller 直接调用service层的接口 RequestMapping("/list/tree&qu…

营养之源:新生儿补充烟酸的关键知识

引言&#xff1a; 烟酸&#xff0c;作为维生素B族的一员&#xff0c;对新生儿的生长发育和健康至关重要。它在细胞的新陈代谢、能量的产生等方面发挥着重要作用。本文将深入探讨烟酸的作用、新生儿补充的必要性&#xff0c;以及在补充烟酸时应该注意的事项&#xff0c;为父母提…

力扣热门100题刷题笔记 - 3.无重复字符的最长子串

力扣热门100题 - 3.无重复字符的最长子串 题目链接&#xff1a;3. 无重复字符的最长子串 题目描述&#xff1a; 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。示例&#xff1a; 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字…

ROS2 Humble学习笔记 (2)

本文发表于个人的github pages。因csdn本身显示插件和转载过程中导致显示不太友好。建议大家阅读原文。想查看完整内容&#xff0c;请移步到ROS2 Humble学习笔记2。 本文篇幅较长&#xff0c;可抽空按照章节阅读。本文只作为对入门教程的一种浮现和提升。 一、前言 在上一篇…

速盾:服务器接入免备案CDN节点的好处有哪些

本文将探讨服务器接入免备案CDN节点的好处&#xff0c;包括提高网站的访问速度、增加网站的稳定性和可靠性、降低带宽成本等方面的优势。同时&#xff0c;还将提供一些相关问题的解答&#xff0c;帮助读者更好地了解这一技术。 随着互联网的迅猛发展&#xff0c;网站的访问速度…

LC 365. 水壶问题

365. 水壶问题 难度: 中等 题目大意&#xff1a; 有两个水壶&#xff0c;容量分别为 jug1Capacity 和 jug2Capacity 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到 targetCapacity 升。 如果可以得到 targetCapacity 升水&#xff0c;最后请用以上水壶中的一或…

中国传媒网CEO:媒体融合发展业态新媒体年后在沪召开

近日,在“坚守媒体初心,拥抱AI时代”2023外滩新媒体年会上,有多项合作达成。 在当前竞争激烈的市场环境中,媒体宣传已经成为企业品牌推广不可或缺的一环。对于很多企业来说往往会犯一个错误,就是默默地参加了展会,并没有进行媒体营销。展会是一种非常有力的宣传和推广方式,可以…

LabVIEW汽车自燃监测预警系统

LabVIEW汽车自燃监测预警系统 随着汽车行业的飞速发展&#xff0c;汽车安全问题日益受到公众的关注。其中&#xff0c;汽车自燃现象因其突发性和破坏性&#xff0c;成为一个不可忽视的安全隐患。为了有效预防和减少自燃事故的发生&#xff0c;提出了LabVIEW的汽车自燃监测预警…

android 网络拦截器统一处理请求参数和返回值加解密实现

前言 项目中遇到参数加密和返回结果加密的业务 这里写一下实现 一来加深记忆 二来为以后参考铺垫 需求 项目在开发中涉及到 登陆 发验证码 认证 等前期准备接口 这些接口需要单独处理 比如不加密 或者有其他的业务需求 剩下的是登陆成功以后的业务需求接口 针对入参和返回值…

mysql 中sql 语句查询今天、昨天、近7天、近30天、一个月内、上一月数据

1、几个小时内的数据 DATE_SUB(NOW(), INTERVAL 5 HOUR) 2、今天 select * from 表名 where to_days(时间字段名) to_days(now()); 3、昨天 select * from 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) < 1; 4、7天 select * from 表名 where DATE_SUB(CUR…

Iceberg从入门到精通系列之二十三:Spark查询

Iceberg从入门到精通系列之二十三&#xff1a;Spark查询 一、使用 SQL 查询二、使用 DataFrame 进行查询三、Time travel四.Incremental read五、检查表六、History七、元数据日志条目八、Snapshots九、Files十、Manifests十一、Partitions十二、所有元数据表十三、参考十四、使…