代码随想录刷题第46天|LeetCode139单词拆分、多重背包

news2024/11/27 13:28:11

1、LeetCode139单词拆分

题目链接:139单词拆分

1、dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。

2、递推公式:如果确定dp[j] 是true,且 [j, i] 这个区间的子串出现在字典里,那么dp[i]一定是true。(j < i )。

3、初始化:dp[0] = true。

4、遍历顺序:

本题其实我们求的是排列数,为什么呢。 拿 s = "applepenapple", wordDict = ["apple", "pen"] 举例。

"apple", "pen" 是物品,那么我们要求 物品的组合一定是 "apple" + "pen" + "apple" 才能组成 "applepenapple"。

"apple" + "apple" + "pen" 或者 "pen" + "apple" + "apple" 是不可以的,那么我们就是强调物品之间顺序。

所以说,本题一定是 先遍历背包,再遍历物品。

5、举例推导。

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> wordset(wordDict.begin(), wordDict.end());
        vector<bool> dp(s.size()+1, false);
        dp[0] = true;

        for (int i = 1; i <= s.size(); i++)
        {
            for (int j = 0; j < i; j++)
            {
                string word = s.substr(j, i - j);
                if (wordset.find(word) != wordset.end() && dp[j])
                {
                    dp[i] = true;
                }
            }
        }
        return dp[s.size()];
    }
};

2、多重背包

01背包每件物品只能取一次;

完全背包每件物品可以取无限次;

多重背包每件物品可以取有限Mi次,把Mi件摊开,其实就是一个01背包问题了。

代码随想录链接:多重背包。

3、总结

问能否能装满背包(或者最多装多少):dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]); 

问装满背包有几种方法:dp[j] += dp[j - nums[i]] ;

问装满背包所有物品的最小个数:dp[j] = min(dp[j - coins[i]] + 1, dp[j]); 

二维dp数组01背包先遍历物品还是先遍历背包都是可以的,且第二层for循环是从小到大遍历。

一维dp数组01背包只能先遍历物品再遍历背包容量,且第二层for循环是从大到小遍历

完全背包先遍历物品还是先遍历背包都是可以的,且第二层for循环是从小到大遍历。

如果求组合数就是外层for循环遍历物品,内层for遍历背包

如果求排列数就是外层for遍历背包,内层for循环遍历物品

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

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

相关文章

Using index Using where和 Using where Using index有何区别

先把结论呈现出来&#xff1a; 1、Using index : 查询的列被索引覆盖&#xff0c;并且where筛选条件是索引的是前导列&#xff0c;Extra中为Using index 2、 Using index &#xff0c;Using where&#xff1a;查询的列被索引覆盖&#xff0c;数据都是先通过索引查询出来的…

语法篇JS基础

一、初识JavaScript 1.1前景 CSS 预处理器 CSS 预处理器定义了一种新的语言&#xff0c;其基本思想是&#xff0c;用一种专门的编程语言&#xff0c;为 CSS 增加了一些 编程的特性&#xff0c;将 CSS 作为目标生成文件&#xff0c;然后开发者就只要使用这种语言进行 CSS 的编码…

cookies介绍

cookies介绍 Cookies概述 Cookies是网络浏览器中用于存储用户信息的小文本文件。Cookie的大小通常限制在4KB以内&#xff08;不同浏览器内核可能有细微差异或有单域名更高的限制&#xff09;。当你访问某个网站时&#xff0c;该网站可能会在你的计算机上创建一个cookie&#…

PDB Database - ESM Atlas PDB 数据集的多维度分析与整理 (3)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131095395 PDB 三大数据集的多维度分析与整理&#xff1a; 人工提交 - RCSB PDB&#xff1a;PDB Database - RCSB PDB 数据集的多维度分…

YUV4:2:0是什么意思

我们经常看到YUV中4&#xff1a;2&#xff1a;0&#xff0c;看着好像懂&#xff0c;仔细看又不懂。 比例&#xff0c;N1:N2:N3里面的数字指水平方向上的相对采样率&#xff0c;N1表示在奇数行和偶数行里Y样本的个数&#xff0c;N2表示奇数行里Cb和Cr样本的个数&#xff0c;N3…

ciscn_2019_s_4-栈迁移

1&#xff0c;三连 程序功能&#xff1a;两次输入 题目类型猜测&#xff1a;栈溢出&#xff0c;栈迁移 2&#xff0c;ida分析 溢出点&#xff1a; system_plt地址: 思路&#xff1a;由于无直接getshell的利用函数&#xff0c;溢出空间只有8字节&#xff08;ebpret占用无法继续…

数据结构与算法脑图

数据结构 非受限线性表 顺序结构 数组 支持 O(1) 的随机访问平均为 O(n) 的插入和删除警惕越界错误,导致 Stack Over Flow链式结构 单链表 不支持随机访问,需要遍历去访问结点插入和删除只需要移动指针,时间复杂度为 O(1)每个结点需要额外的空间存储指针,需要的内存比数组…

控制视图内容的位置

文本域中的提示内容在默认情况下是垂直居中的&#xff0c;要改变文本在文本域中的位置&#xff0c;可以使用android:gravity来实现。 利用android:gravity可以指定如何在视图中放置视图内容&#xff0c;例如&#xff0c;如何在文本域中放置文本。 如果希望视图文本显示在上方&a…

RocketMQ 学习社区重磅上线!AI 互动,一秒了解 RocketMQ 功能源码

作者&#xff1a;RocketMQ学习社区 RocketMQ 背景 Apache RocketMQ 诞生至今&#xff0c;一直服务于 100% 阿里集团内部业务、阿里云以及开源社区数以万计的企业客户。 历经十多年双十一严苛流量验证的 RocketMQ&#xff0c;承载了超过万亿级消息规模的洪峰压力。2021 年 Ap…

大数据权限与安全

大数据权限与安全 1、权限概述 1.1、大数据平台权限管控现状 权限的管控&#xff0c;历来是大数据平台中最让人头疼的问题之一。管得严了&#xff0c;业务不流畅&#xff0c;用户不开心&#xff0c;放得宽了&#xff0c;安全没有底。而且大数据平台组件&#xff0c;服务众多…

InnoDB - 页结构

InnoDB - 页结构 文章目录 InnoDB - 页结构1. InnoDB页简介2. InnoDB页结构2.1 User Records&#xff08;数据&#xff09;2.2 Page Directory&#xff08;页目录&#xff09;2.3 Page Header&#xff08;页头部信息&#xff09;2.4 File Header&#xff08;文件头&#xff09;…

ByteBuddy

JavaAgent是在JDK5之后提供的新特性&#xff0c;也可以叫java代理。 开发者通过这种机制(Instrumentation)可以在加载class文件之前修改方法的字节码(此时字节码尚未加入JVM)&#xff0c;动态更改类方法实现AOP&#xff0c;提供监控服务如&#xff1b;方法调用时长、可用率、内…

RocketMQ详解

介绍 ​ RocketMQ作为一款纯Java、分布式、队列模型的开源消息中间件&#xff0c;支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。 RocketMQ 特点 支持发布/订阅&#xff08;Pub/Sub&#xff09;和点对点&#xff08;P2P&#xff09;消息模型 ​ 在一个队列中可…

ASEMI代理英飞凌SPW47N60C3功率MOS管的性能与应用

编辑-Z 本文将对SPW47N60C3功率MOSFET的性能与应用进行分析。我们将介绍SPW47N60C3的基本性能参数&#xff0c;然后从四个方面对其性能进行详细阐述&#xff0c;包括电气性能、热性能、封装与可靠性以及应用领域。 1、SPW47N60C3的基本性能参数 SPW47N60C3是一款高性能的功率…

Python 和 C++ 混合编程:pybind11 使用

Python 和 C 混合编程&#xff1a;pybind11 使用 1. 目的需求2. pybind 11 简介3. 使用实践3.1 开发环境3.2 准备工作3.3 建立工程 test3.4 编译工程 test 库3.5 Python 调用 工程 test 库 4. 实线小结5. 参考资料 1. 目的需求 我们通常在 Python 上进行算法开发&#xff0c;因…

【数据结构】——树的相关习题

目录 一、选择填空判断题题1题2题3题4题5题6题7题8题9 二、应用题题10&#xff08;遍历序列&#xff09;题11&#xff08;存储结构&#xff09;题12 13&#xff08;二叉树/树、森林之间的转换&#xff09;题14&#xff08;线索二叉树&#xff09; 一、选择填空判断题 题1 1、设…

Java的包装类(装箱和拆箱面试题)

1.为什么要有包装类(或封装类&#xff09; 为了使基本数据类型的变量具有类的特征&#xff0c;引入包装类。 2.基本数据类型与对应的包装类&#xff1a; 3.装箱和拆箱 基本数据类型包装成 包装类的实例—装箱 通过包装类的构造器实现&#xff1a; int i 500; Integer t ne…

案例34:基于Springboot在线互动学习网站开题报告设计

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

深度学习笔记之Seq2Seq(一)基本介绍

深度学习笔记之Seq2seq——基本介绍 引言回顾&#xff1a;经典循环神经网络结构关于循环神经网络的更多引用 Seq2seq \text{Seq2seq} Seq2seq网络结构 Seq2seq \text{Seq2seq} Seq2seq结构描述 引言 从本节开始&#xff0c;将介绍 Seq2seq \text{Seq2seq} Seq2seq。 回顾&…

苏轼人生历程不同时期作品

大文豪苏轼才华横溢&#xff0c;一生却屡经贬谪&#xff0c;四处漂泊。但好在他生性豁达&#xff0c;为人率真&#xff0c;又深得道家思想精髓&#xff0c;所以他不仅没有为不幸的遭遇所折服&#xff0c;反而活出了别样的潇洒与风采。也正因如此&#xff0c;他的诗词、他的性情…