代码随想录算法训练营第四十六天|139.单词拆分,多重背包,背包问题总结

目录

  • 139.单词拆分
    • 思路
    • 代码
  • 多重背包
    • 思路
    • 代码
  • 背包问题总结

139.单词拆分

题目链接:704. 二分查找

文档讲解:代码随想录

视频讲解:动态规划之完全背包,你的背包如何装满?| LeetCode:139.单词拆分

思路

dp数组dp[i]表示长度为i的字符串是否可以拆分为一个或多个再字典中出现的单词。

递推公式:如果dp[j]为true,且[j, i]区间的字串出现在字典中,则dp[i]为true。

如:对于dp[i],遍历j=0~i,如果字串[j, i]出现在字典中,且dp[j]为true,则dp[i]为true。

代码

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 = 0; 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()];}
};

多重背包

题目链接:56. 携带矿石资源(第八期模拟笔试)

文档讲解:代码随想录

思路

将多重背包中的所有物品展开,则转换为01背包问题。

代码

#include <iostream>
#include <vector>
#include <string>
#include <unordered_set>using namespace std;int main() {int C, N;cin >> C >> N;vector<int> weights(N, 0);vector<int> values(N, 0);vector<int> nums(N, 0);for (int i = 0; i < N; i++)cin >> weights[i];for (int i = 0; i < N; i++)cin >> values[i];for (int i = 0; i < N; i++)cin >> nums[i];int num_count = 0;for (auto i : nums)num_count += i;vector<int> stones_weights(num_count, 0);vector<int> stones_values(num_count, 0);int index = 0;for (int i = 0; i < N; i++) {for (int j = 0; j < nums[i]; j++) {stones_weights[index] = weights[i];stones_values[index] = values[i];index++;}}vector<int> dp(C + 1, 0);for (int i = 0; i < stones_weights.size(); i++) {for (int j = C; j >= stones_weights[i]; j--) {dp[j] = max(dp[j], dp[j - stones_weights[i]] + stones_values[i]);}}cout << dp[C] << endl;
}

背包问题总结

文档讲解:代码随想录

按背包类型分类:01背包、完全背包、多重背包等。

  • 01背包:遍历背包时从后向前遍历
  • 完全背包:遍历背包时从前向后遍历
  • 多重背包:将物品展开转换为01背包问题

按所求问题分类:能否装满背包,背包最多装多少,装满背包有多少种方法,背包装满最大价值,装满背包所需最小物品数。

  • 能否装满背包:dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]),即01背包问题中价值和重量相同,装完背包后,最大价值与背包容量相同则可以装满背包。
  • 背包最多装多少:dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]),即01背包问题中价值和重量相同。
  • 装满背包有多少种方法:dp[j] += dp[j - nums[i]]。
  • 背包装满最大价值:dp[j] = max(dp[j], dp[j - weight[i]] + value[i])。
  • 装满背包所需最小物品数:dp[j] = min(dp[j], dp[j - nums[i]] + 1)。

遍历顺序

  • 求组合数:外层循环遍历物品,内层循环遍历背包。
  • 求排列数:外层循环遍历背包,内层循环遍历物品。

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

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

相关文章

面试常见手撕代码

目录 1.线程池 and 数据库连接池 2.生产者&#xff0c;消费者问题 3.排序算法 1.线程池 and 数据库连接池 线程池 #include <iostream> #include <vector> #include <queue> #include <thread> #include <mutex> #include <condition_va…

2024第二届智慧教育和人类发展国际会议(ICSEHD2024)

2024第二届智慧教育和人类发展国际会议(ICSEHD2024) 会议简介 智慧教育对于提升教育质量、促进教育公平、推动教育现代化和数字化转型、培养创新人才以及推动教育理论的发展都具有重要的意义&#xff0c;对人类发展产生着深远的影响&#xff0c;人类发展是智慧教育的最终目的…

易图讯科技数字武装三维电子沙盘

深圳易图讯科技(www.3dgis.top)集成了高清卫星影像、地形数据、实景三维模型、基干民兵、普通民兵、重要目标、兵要地志、企业潜力 、行业潜力 、社会组织潜力 、特种装备器材潜力、敌情数据、现场环境数据、物联感知信息&#xff0c;构建一体化的数字孪生空间&#xff0c;实现…

backtrader笔记摘录

策略 在next()里接收当前行情&#xff0c;作出买卖判断&#xff0c;通过buy()和sell()函数下单。 信号 用来通知买和卖&#xff0c;有空头信号、多头信号、空多头信号之分。 指示器 Indicators are always instantiated during __init__ in the StrategyIndicator values …

美港通正规股票炒股市场又一新能车火了!上市首日,大涨34%

查查配大家早上好!昨夜今晨,又有很多大事发生! 美三大股指涨跌不一,美债收益率集体收涨;OpenAI或推AI语音助手;来自中国的新能源车品牌——极氪在美股上市,首日大涨超34%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、…

element ui输入框后面带输入的字符数量

使用el-input的属性&#xff1a; maxlength&#xff1a;最长字符限制&#xff1b; show-word-limit&#xff1a;显示输入字符数量&#xff1b; 例&#xff1a; <el-input v-model"title" placeholder"请输入名称" maxlength"200" show-wor…

【Node.js】如何使用 Express.js 和 TypeScript 构建 CRUD API

如何使用 Express.js 和 TypeScript 构建 CRUD API 作者&#xff1a;Racheal Kuranchie 来源&#xff1a;https://medium.com/rachealkuranchie/how-to-build-a-crud-api-with-express-js-and-typescript-21c7c66e5296 文章目录 如何使用 Express.js 和 TypeScript 构建 CRUD A…

面试 Java 并发编程八股文十问十答第十六期

面试 Java 并发编程八股文十问十答第十六期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;final 和可以保证…

woffice– 内部网和外部网WordPress高端资讯主题

下载地址&#xff1a;https://m.gx.cn/site/3046.html 完全灵活&#xff0c;与最新的WordPress品牌兼容 翻译语言超过15种 使用最新技术设计快速web应用程序 所有这些都以谷歌材料设计为灵感&#xff0c;采用易于定制的设计&#xff0c;给人一种优美的现代感和易于导航的用户…

ERROR 1045 (28000) Access denied for user ‘root‘@‘IP‘(using password YES/NO)

查看权限 要查看MySQL用户的权限&#xff0c;您可以使用SHOW GRANTS语句。这将列出用户的权限&#xff0c;包括授予的权限和可以授予其他用户的权限。 以下是查看当前用户权限的SQL命令&#xff1a; SHOW GRANTS; 如果您想查看特定用户的权限&#xff0c;可以使用以下命令&…

让 CloudFlare 支持 Brotli 压缩算法 11 级压缩比,更节流!

站长们应该都知道 Brotli 压缩算法吧&#xff0c;这是一种通用的无损压缩算法。它结合使用 LZ77 算法的一个现代变体&#xff08;Lempel-Ziv 编码&#xff09;、霍夫曼编码和二阶上下文建模来压缩数据&#xff0c;提供了与当前最佳通用压缩方法相媲美的压缩比。2015 年 9 月谷歌…

笔记-跨域方式实现原理

websocket Websocket是HTML5的一个持久化的协议&#xff0c;它实现了浏览器与服务器的全双工通信&#xff0c;同时也是跨域的一种解决方案。WebSocket和HTTP都是应用层协议&#xff0c;都基于 TCP 协议。但是 WebSocket 是一种双向通信协议&#xff0c;在建立连接之后&#xff…

51-50 两万字长文解读ControlNet论文和代码,以及自定义模型训练和图片精确控制生成实验

今天咱们来看 ICCV2023 最佳论文Adding Conditional Control to Text-to-Image Diffusion Models&#xff0c;又称为ControlNet。提到图像生成Finetuning工程方法&#xff0c;有Textual inversion、DreamBooth、LoRA、T2I-Adapter以及ControlNet&#xff0c;其中最著名的当属Co…

Jupyter配置

一、修改Jupyter打开界面 &#xff08;1&#xff09;打开【Anaconda Prompt】&#xff0c;输入【jupyter notebook --generate-config】命令 从运行结果可知【jupyter_notebook_config.py】的位置 &#xff08;2&#xff09;使用【记事本】打开 找到# c.NotebookApp.noteb…

同城预约上门服务家政小程序

基于Thinkphp和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统&#xff0c;用户端、服务端、门店端各端相互依赖又相互独立&#xff0c;支持选择项目、选择服务人员、选择门店多种下单方式&#xff0c;支持上门服务和到店核销两种服务方式&#xff0c;支持自营…

瞬息全宇宙——平行宇宙终极教程,手把手教你做出百万点赞视频

最近一种叫“瞬息全宇宙”的视频火了&#xff0c;抖音一期视频百万赞&#xff0c;各个博主视频都在带瞬息全宇宙这个标签&#xff0c;于是就有很多朋友催我出教程了&#xff0c;在琢磨了几天之后&#xff0c;终于整出来了 教程包含了插件的安装&#xff0c;界面的讲解&#xff…

C语言 | Leetcode C语言题解之第80题删除有序数组中的重复项II

题目&#xff1a; 题解&#xff1a; int removeDuplicates(int* nums, int numsSize) {if (numsSize < 2) {return numsSize;}int slow 2, fast 2;while (fast < numsSize) {if (nums[slow - 2] ! nums[fast]) {nums[slow] nums[fast];slow;}fast;}return slow; }

Nginx线程池源码刨析

Nginx线程池源码刨析 相关的API int thread_mutex_create (pthread_mutex_t *mtx); int thread_mutex_destroy (pthread_mutex_t *mtx); int thread_mutex_lock (pthread_mutex_t *mtx); int thread_mutex_unlock (pthread_mutex_t *mtx); …

「PHP系列」PHP AJAX RSS 阅读器

文章目录 一、AJAX RSS 阅读器1. HTML结构 (index.html)2. PHP处理RSS (rss_fetcher.php)注意事项&#xff1a; 二、AJAX RSS 阅读器运用步骤 1: 设置HTML页面步骤 2: 编写PHP脚本 (rss_fetcher.php)步骤 3: 配置服务器步骤 4: 测试额外提示&#xff1a; 三、相关链接 一、AJAX…

python微信小程序 django+uniapp民宿房屋租赁短租系统

本课题主要基于微信小程序的民宿短租系统的设计&#xff0c;实现了在微信小程序里的民宿房屋的管理系统&#xff0c;系统将房屋信息发布&#xff0c;房屋租赁等功能集于一身&#xff0c;为热爱旅游的用户提供了多种多样的房屋租赁业务&#xff0c;同时也方便了房屋的拥有者发布…