代码随想录算法训练营第四十六天|139.单词拆分、56.携带矿石资源

139.单词拆分

思路:将字符串s看作为背包容量,从字符串中获取物品,刚好满足背包容量的过程,因为可以从字符串中多次取值,相当于物品的数量是不限制,这就是一个完全背包的问题!这个题有个关键点,在于遍历物品的时候,分为两部分,一部分是前j个部分,判断这部分是否是物品中的东西,另外一部分就是判断剩下这部分是否是物品中的东西,相当于把一个子串也要拆分!一个大的串,就是多个子串组成,并且这些子串还是有顺序的!

class Solution {
public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> myset(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(myset.find(word)!=myset.end()&&dp[j]==true){dp[i]=true;}}}return dp[s.size()];}
};

56.携带矿石资源

思路:将每个类型的数量进行展开,最后变成01背包问题,但是展开的时候,要区分,应该在01遍历的过程中,这十分重要!

#include<iostream>
#include<vector>
using namespace std;
int main()
{int bagweight,n;cin>>bagweight>>n;vector<int> weight(n,0);vector<int> value(n,0);vector<int> nums(n,0);for(int i=0;i<n;i++)cin>>weight[i];for(int i=0;i<n;i++)cin>>value[i];for(int i=0;i<n;i++)cin>>nums[i];vector<int> dp(bagweight+1,0);for(int i=0;i<n;i++){for(int j=bagweight;j>=weight[i];j--){//01背包的套路//相当于利用一个循环吧,把每次都给取开for(int k=1;k<=nums[i]&&(j-k*weight[i])>=0;k++){dp[j]=max(dp[j],dp[j-k*weight[i]]+k*value[i]);}}}cout<<dp[bagweight]<<endl;
}

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

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

相关文章

R语言数学建模(三)—— 模型工作流

R语言数学建模&#xff08;三&#xff09;—— 模型工作流 文章目录 R语言数学建模&#xff08;三&#xff09;—— 模型工作流前言一、模型工作流1.1 模型的起点和终点在哪里&#xff1f;1.2 Workflow基础1.3 将原始变量添加到workflow()1.4 workflow()如何使用formula基于树的…

【数据结构和算法初阶(C语言)】复杂链表(随机指针,随机链表的复制)题目详解+链表顺序表结尾

目录 1.随机链表的复制 1.2题目描述 1.3题目分析 1.4解题&#xff1a; 2.顺序表和链表对比 2.1cpu高速缓存利用率 3.结语 1.随机链表的复制 一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random 该指针可以指向链表中的任何节点或空节点。 1.2题目描…

Godot自定义控件样式语法解析

前言 本篇原始文章写于2023年8月7日&#xff0c;存储在我的语雀文档中。但是语雀分享有诸多不便&#xff0c;为了让更多Godoter更轻松的搜到和看到&#xff0c;就转过来了。 这个项目我上传了Github&#xff0c;后续会贴上链接。 概述 Godot控件体系存在的问题之一就是样式无…

【pyinstaller打包记录】Windows系统打包exe后,onnxruntime报警告(Init provider bridge failed)

简介 PyInstaller 是一个用于将 Python 程序打包成可执行文件&#xff08;可执行程序&#xff09;的工具。它能够将 Python 代码和其相关的依赖项&#xff08;包括 Python 解释器、依赖的模块、库文件等&#xff09;打包成一个独立的可执行文件&#xff0c;方便在不同环境中运行…

SQL索引优化

自己学习日志 索引优化 为搜索字段、排序字段、select查询列&#xff0c;创建合适的索引&#xff0c;不过要考虑数据的业务厂家&#xff1a;查询多还是增删多 尽量建立组合索引并注意组合索引的创建顺序&#xff0c;按照顺序组织查询条件&#xff0c;尽量将筛选颗粒度大的条件…

凌风 TEMU工具箱 抢仓 库存销售数据利润计算 选品监控采集上品 一网打尽

凌风TEMU工具箱介绍 一、安装教程1、下载方式2、环境准备3、安装步骤3.1、插件安装3.2、客户端安装 4、启动软件 二、使用教程一&#xff1a;登录注册激活方法2.1 注册登录2.2 激活方式 &#xff08;激活码激活&#xff09;2.3 绑定店铺 二&#xff1a;使用方法&#xff1a;功能…

Android Gradle开发与应用 (四) : Gradle构建与生命周期

1. 前言 前几篇文章&#xff0c;我们对Gradle中的基本知识&#xff0c;包括Gradle项目结构、Gradle Wrapper、GradleUserHome、Groovy基础语法、Groovy语法概念、Groovy闭包等知识点&#xff0c;这篇文章我们接着来介绍Gradle构建过程中的知识点。 2. Project : Gradle中构建…

揭秘大气颗粒物与VOCs:PMF源解析技术全解析

在现今日益严峻的环境问题中&#xff0c;大气颗粒物和臭氧污染尤为突出&#xff0c;它们不仅深刻影响着全球气候和生态环境&#xff0c;更对人体健康构成了严重威胁。为了有效应对这一挑战&#xff0c;我们首先需要深入了解颗粒物和臭氧的来源&#xff0c;特别是臭氧的前体物之…

遥测终端助力城市内涝积水监测,守护城市生命线!

近年来&#xff0c;随着全球气候的变化和城市化进程的加速&#xff0c;强降雨事件频发&#xff0c;导致城市内涝问题日益严重。道路低洼处、下穿式立交桥和隧道在强降雨时常常产生大量积水&#xff0c;给人们的出行带来极大不便&#xff0c;严重时甚至威胁人民的生命安全和造成…

Unity 学习笔记索引

Unity安装与简单设置 Unity 常用操作与素材网站 Unity 脚本-生命周期常用函数 Unity 预制体与变体 Unity 使用脚本获取组件&#xff0c;代码生成预制体 Unity 向量计算、欧拉角与四元数转换、输出文本、告警、错误、修改时间、定时器、路径、 Unity 切换场景-&#xff08;同步与…

JVM运行时数据区——方法区

文章目录 1、栈、堆、方法区的交互关系2、方法区的理解2.1、方法区的官方描述2.2、方法区的基本理解2.3、JDK中方法区的变化 3、设置方法区大小与OOM3.1、设置方法区内存的大小3.2、方法区内存溢出 4、方法区的内部结构4.1、类型信息、域信息和方法信息介绍4.1.1、类型信息4.1.…

Spring Cloud原理详解

Spring Cloud 是基于 Spring Boot 的微服务架构开发工具包&#xff0c;旨在帮助开发人员快速构建分布式系统中的一些常见模式&#xff0c;例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、领导选举、分布式会话和集群状态。Spring Cloud 是 Spring 生态系…

用户和用户组管理及密码管理

用户&#xff1a; useradd 新建用户 useradd 用户名称 useradd -g 组名称 用户名称 userdel 删除用户 passwd 修改用户密码 usermod 修改用户属性 usermod [选项] 用户名 chage 修改用户属性 chage [选项…

动手学深度学习—循环神经网络RNN详解

循环神经网络 循环神经网络的步骤&#xff1a; 处理数据 将数据按照批量大小和时间步数进行处理&#xff0c;最后得到迭代器&#xff0c;即每一个迭代的大小是批量大小时间步数&#xff0c;迭代次数根据整个数据的大小决定&#xff0c;最后得出处理的数据&#xff08;参照第三…

极狐GitLab Runner 添加 极狐GitLab 域名 host

本文作者 徐晓伟 自定义 GitLab 域名解析 查看极狐 GitLab runner 日志 查看极狐 GitLab Runner Pod 名称 [rootanolis-7-9 ~]# kubectl -n gitlab-test get pod | grep gitlab-runner my-gitlab-gitlab-runner-6fb4bf7468-nmnkp 0/1 Running 29 (62s ago…

【嵌入式——QT】QDockWidget

QDockWidget提供了dock widget的概念&#xff0c;也称为工具面板或实用窗口。Dock窗口是放置在QMainWindow中围绕中心窗口组件的Dock窗口组件区域中的次要窗口&#xff0c;QDockWidget是可以在QMainWindow窗口停靠&#xff0c;或在桌面最上层浮动的界面组件。 停靠窗口可以被移…

重拾前端基础知识:JavaScript

重拾前端基础知识&#xff1a;JavaScript 前言使用JavaScript输出语法运算符条件语句循环数据类型字符串数字数组对象日期函数 数学正则表达式异常处理类集合模块JSON闭包异步调试DOM&#xff08;文档对象模型&#xff09;事件事件监听器表单 BOM&#xff08;浏览器对象模型&am…

【排序】详解选择排序

一、思想 选择排序的原理与思想非常直观和简单&#xff0c;它通过不断地选择未排序部分的最小&#xff08;或最大&#xff09;元素&#xff0c;并将其放到已排序部分的末尾来实现排序。 具体来说&#xff0c;选择排序的过程可以分解为以下几个步骤&#xff1a; 寻找最小&…

三步骤找到用户真正痛点 提高需求分析质量

用户痛点对于需求分析具有至关重要的作用&#xff0c;这直接关系着需求分析结果是否真正满足用户需求&#xff0c;关系着最终研发的产品是否能够满足市场的需求&#xff0c;是否能够在竞争激烈的市场中脱颖而出。因此找到用户真正痛点至关重要。 1、什么是痛点 痛点是消费者心理…

DML相关操作

DML 是数据操作语言&#xff0c;用来对数据库中表的数据记录进行增删改操作 添加数据&#xff08;insert&#xff09;修改数据&#xff08;update&#xff09;删除数据&#xff08;delete&#xff09; DML-添加数据 1.给指定字段添加数据 insert into 表名&#xff08;字段…