day46第九章动态规划(二刷)
今日任务
- 139.单词拆分
- 关于多重背包,你该了解这些!
- 背包问题总结篇!
关于多重背包,力扣上没有相关的题目,所以今天大家的重点就是回顾一波自己做的背包题目吧。
139.单词拆分
题目链接:
https://leetcode.cn/problems/word-break/description/
题目描述:
给你一个字符串 s
和一个字符串列表 wordDict
作为字典。请你判断是否可以利用字典中出现的单词拼接出 s
。
**注意:**不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
示例 1:
输入: s = "leetcode", wordDict = ["leet", "code"]
输出: true
解释: 返回 true 因为 "leetcode" 可以由 "leet" 和 "code" 拼接成。
示例 2:
输入: s = "applepenapple", wordDict = ["apple", "pen"]
输出: true
解释: 返回 true 因为"applepenapple" 可以由"apple" "pen" "apple" 拼接成。注意,你可以重复使用字典中的单词。
示例 3:
输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]
输出: false
提示:
1 <= s.length <= 300
1 <= wordDict.length <= 1000
1 <= wordDict[i].length <= 20
s
和wordDict[i]
仅有小写英文字母组成wordDict
中的所有字符串 互不相同
题解代码:
class Solution {public://二刷复习动规bool wordBreak(string s, vector<string>& wordDict){unordered_set<string> wordSet(wordDict.begin(), wordDict.end()); //将词典中的词放入一个set中vector<bool> dp(s.size()+1, false); //dp数组,dp[i]表示://字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词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); //substr(起始位置,截取的个数)if(wordSet.find(word) != wordSet.end() && dp[j]){dp[i] = true;}}}return dp[s.size()];}//一刷动规/*bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet(wordDict.begin(), wordDict.end()); //将词典中的词放入一个set中vector<bool> dp(s.size()+1, false); //dp数组,dp[i]表示://字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典张出现的单词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);//substr(起始位置,截取的个数)if(wordSet.find(word)!=wordSet.end() && dp[j]){dp[i] = true;}}}return dp[s.size()];}*/
};
关于多重背包,你该了解这些!
这个大家可以参考卡尔的说明。
链接为:https://programmercarl.com/背包问题理论基础多重背包.html#多重背包
有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。
多重背包和01背包是非常像的, 为什么和01背包像呢?
每件物品最多有Mi件可用,把Mi件摊开,其实就是一个01背包问题了。
例如:
背包最大重量为10。
物品为:
重量 | 价值 | 数量 | |
---|---|---|---|
物品0 | 1 | 15 | 2 |
物品1 | 3 | 20 | 3 |
物品2 | 4 | 30 | 2 |
问背包能背的物品最大价值是多少?
和如下情况有区别么?
重量 | 价值 | 数量 | |
---|---|---|---|
物品0 | 1 | 15 | 1 |
物品0 | 1 | 15 | 1 |
物品1 | 3 | 20 | 1 |
物品1 | 3 | 20 | 1 |
物品1 | 3 | 20 | 1 |
物品2 | 4 | 30 | 1 |
物品2 | 4 | 30 | 1 |
毫无区别,这就转成了一个01背包问题了,且每个物品只用一次。
背包问题总结篇!
背包问题的总结,也是参考下面的链接吧。
https://programmercarl.com/背包总结篇.html#背包递推公式
总结
再重复一下动规解法五部曲:
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组
day46第九章动态规划(二刷)相关推荐
- 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...
- SRPG游戏开发(四十)第九章 战斗系统 - 二 计算战斗数据(Calculate Combat Data)
返回总目录 第九章 战斗系统(Combat System) 在SRPG中,大多数情况是指角色与角色之间的战斗.而这种战斗一般有两种模式: 地图中直接战斗: 有专门的战斗场景. 这两种模式的战斗在数据上 ...
- 算法图解第九章动态规划读书笔记
动态规划是一种解决棘手问题的方法,它将问题分成小问题,并先着手解决这些小问题 一.背包问题:一个背包的容量是4磅,吉他容量一磅,价值1500美元,音响容量4磅,价值3000美元,笔记本电脑容量3磅,价 ...
- 玩转算法之面试第九章-动态规划
动态规划: 9-12 斐波那契数列 对重复计算,进行优化,进行记忆化搜索 假设基本的问题已经被解决,依次内推. 动态规划:将原问题拆解成若干个子问题,同时保存子问题的答案,使得每个子问题只求解一次,最 ...
- 第九章 动态规划-1278:【例9.22】复制书稿(book)
1278:[例9.22]复制书稿(book) 时间限制: 1000 ms 内存限制: 65536 KB [题目描述] 现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允 ...
- 第九章 动态规划-1261:【例9.5】城市交通路网
1261:[例9.5]城市交通路网 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 3909 通过数: 2854 [题目描述] 下图表示城市之间的交通路网,线段上的数字表示费用,单 ...
- 《微观经济学》 第九章(二)
9.11 公共品带来的市场失灵 绿化属于公共品的范畴. 微观经济学中一个对商品进行分类有用的划分标准是根据这些商品在消费上是否具有排他性和竞争性来分类. 根据这个分类规则可以把现实经济中的产品分为:私 ...
- C Primer Plus 第九章 大二第二学期 第二天学习
9.3.3 尾递归 最简单的递归形式是把递归调用置于函数的末尾,即正好在return语句之前.这种形式的递归被称为尾递归 因为递归调用在函数的末尾, 尾递归是最简单的递归形式,因为它相当于循环 下面要 ...
- 第九章 动态规划-1296:开餐馆
1296:开餐馆 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 3952 通过数: 1923 [题目描述] 信息学院的同学小明毕业之后打算创业开餐馆.现在共有n个地点可供选择.小 ...
最新文章
- 2021第12届蓝桥杯省赛Python题目
- string转map集合_[系列文章] Go - Map 集合
- linux卸载桌面Ubuntu,Ubuntu安装卸载KDE桌面之折腾记
- [github]使用——上传工程到新建的repo
- TensorFlow学习笔记(二十) tensorflow实现简单三层网络
- (八)Spring与MyBatis整合
- 8255编程c语言程序,51单片机8255驱动C程序
- 集合类 List 的那些坑
- java域名解析到目录_nginx将泛解析的匹配域名绑定到子目录配置方法
- Android各种动画效果
- Xpose框架的入门学习
- 萝卜青菜各有所爱------npm和yarn
- 基于android手机实时监控ipcam视频之三:H.264的RTP打包解析
- 战术板将要下岗 iPad登陆橄榄球场
- 零基础学python难吗?python自学难吗?
- PT_二维随机变量:正态分布的可加性/一维随机变量函数与正态分布
- 目前市场上最好用的时序数据库是什么?
- 这是怎样的一个女孩子
- 失眠尽快入睡小妙招,这些助眠产品让你一招入睡
- flowable支持集群数据库
热门文章
- 浅谈软件测试工程师的技能树
- 关于硕士论文文献综述怎么写
- ipad python编程软件_ipad上运行python的方法步骤
- t480s控制面板打开触摸板_Thinkpad T480 T480S CPU温度主板温度过高的问题解决技巧...
- php 生成bmp图片,[GD]生成bmp格式的图片(imagebmp)
- 直播短视频系统源码开发
- 数据仓库-OLAP操作
- 字节跳动在 Rust 微服务方向的探索和实践
- USB共享网络流程分析和自动分享网络给PC
- 复杂toB业务的场景方法论