蓝桥杯刷题-day5-动态规划
文章目录
- 使用最小花费爬楼梯
- 解码方法
使用最小花费爬楼梯
【题目描述】
给你一个整数数组 cost
,其中 cost[i]
是从楼梯第 i
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。
你可以选择从下标为 0
或下标为 1
的台阶开始爬楼梯。
请你计算并返回达到楼梯顶部的最低花费。
【输入样例】
cost = [10,15,20]
cost = [1,100,1,1,1,100,1,1,100,1]
【输出样例】
15
6
【数据规模与约定】
2 <= cost.length <= 1000
0 <= cost[i] <= 999
【解题思路】
定义一个数组 dp,其中 dp[i] 表示达到第 i 个台阶的最低花费。
对于第 i 个台阶,我们有两种选择:
- 从第 i-1 个台阶向上爬一个台阶,花费为 dp[i-1] + cost[i-1]。
- 从第 i-2 个台阶向上爬两个台阶,花费为 dp[i-2] + cost[i-2]。
我们选择这两种方案中花费较小的那个,即 dpi = min(dp[i-1] + cost[i-1], dp[i-2] + cost[i-2])。
最终,dp[n] 就是达到楼梯顶部的最低花费。
【C++程序代码】
解法一:
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {//1.创建dp表int n = cost.size();vector<int> dp(n+1);//2.初始化dp[0] = dp[1] = 0;if(n <2) return 0;//3.填表for(int i = 2;i<n+1;i++){dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}//4.返回值return dp[n];}
};
解法二:
class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {//1.创建dp表int n = cost.size();vector<int> dp(n);//2.初始化dp[n-2] = cost[n-2];dp[n-1] = cost[n-1];//3.填表for(int i = n-3;i>=0;i--){dp[i] = min(dp[i+1]+cost[i],dp[i+2]+cost[i]);}//4.返回值return min(dp[0],dp[1]);}
};
解码方法
【题目描述】
一条包含字母 A-Z
的消息通过以下映射进行了 编码 :
'A' -> "1"
'B' -> "2"
...
'Z' -> "26"
要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106"
可以映射为:
"AAJF"
,将消息分组为(1 1 10 6)
"KJF"
,将消息分组为(11 10 6)
注意,消息不能分组为 (1 11 06)
,因为 "06"
不能映射为 "F"
,这是由于 "6"
和 "06"
在映射中并不等价。
给你一个只含数字的 非空 字符串 s
,请计算并返回 解码 方法的 总数 。
题目数据保证答案肯定是一个 32 位 的整数。
【输入样例】
s = "12"
s = "06"
【输出样例】
2
0
【数据规模与约定】
1 <= s.length <= 100
s
只包含数字,并且可能包含前导零。
【解题思路】
定义一个数组 dp,其中 dp[i] 表示前 i 个字符可以解码的方法总数。
对于第 i 个字符,我们有两种选择:
- 将其作为单独的一个字母进行解码,前提是第 i 个字符不为 ‘0’。在这种情况下,我们可以将前 i-1 个字符解码的方法数加到 dp[i]上,即 dp[i] += dp[i-1]。
- 将其与前一个字符一起解码,形成一个两位数。前提是第 i-1 个字符不为 ‘0’,且与第 i 个字符组成的两位数在 10 到 26 之间。在这种情况下,我们可以将前 i-2 个字符解码的方法数加到 dpi 上,即 dp[i] += dp[i-2]。
最终,dp[n-1] 就是整个字符串的解码方法总数。
【C++程序代码】
class Solution {
public:int numDecodings(string s) {int n = s.size();vector<int> dp(n);// 处理第一个字符dp[0] = s[0] != '0';if(n==1)return dp[0];// 处理前两个字符if(s[0]!='0' && s[1]!='0')dp[1]++;int t = (s[0]-'0')*10 + (s[1]-'0');if(t>=10 && t<=26)dp[1]++;// 从第三个字符开始遍历for(int i = 2;i<n;i++){// 将当前字符作为单独的一个字母解码if(s[i] != '0')dp[i] += dp[i-1];// 将当前字符与前一个字符一起解码t = (s[i-1]-'0')*10 + (s[i]-'0');if(t>=10 && t<=26)dp[i] += dp[i-2];}return dp[n-1];}
};
相关文章:
蓝桥杯刷题-day5-动态规划
文章目录 使用最小花费爬楼梯解码方法 使用最小花费爬楼梯 【题目描述】 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶…...
新概念英语1:Lesson7内容详解
新概念英语1:Lesson7内容详解 如何询问人的个人信息 本课里有两个关于个人信息的问句,一个是问国籍,一个是问工作,句型如下: what nationality are you?询问国籍 回复一般就是我是哪国人,I’m Chinese…...
FASTAPI系列 14-使用JSONResponse 返回JSON内容
FASTAPI系列 14-使用JSONResponse 返回JSON内容 文章目录 FASTAPI系列 14-使用JSONResponse 返回JSON内容前言一、默认返回的JSON格式二、JSONResponse 自定义返回三、自定义返回 headers 和 media_type总结 前言 当你创建一个 FastAPI 接口时,可以正常返回以下任意…...

【版本控制】git使用指南
Git 是一个免费、开源的分布式版本控制系统,最初由 Linus Torvalds 于2005年创建。它旨在管理项目的源代码,并提供了跟踪更改、协作开发、版本控制、分支管理等功能。 一、版本控制概念 版本控制系统(Version Control System,VC…...

Flask 与小程序 的图片数据交互 过程及探讨研究学习
今天不知道怎么的,之前拿编程浪子地作品抄过来粘上用好好的,昨天开始照片突的就不显示了。 今天不妨再耐味地细细探究一下微信小程序wxml 和flask服务器端是怎么jpg图片数据交互的。 mina/pages/food/index.wxml <!--index.wxml--> <!--1px …...

【JavaEE】初识线程,线程与进程的区别
文章目录 ✍线程是什么?✍线程和进程的区别✍线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 ✍线程是什么? ⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按…...
Kafka高级面试题-2024
Kafka中的Topic和Partition有什么关系? 在Kafka中,Topic和Partition是两个密切相关的概念。 Topic是Kafka中消息的逻辑分类,可以看作是一个消息的存储类别。它是按照不同的主题对消息进行分类,并且可以用于区分和筛选数据。每个…...
Qt——Qt文本读写之QFile与QTextStream的使用总结(打开文本文件,修改内容后保存至该文件中)
【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》...
掌握Java中的super关键字
super 是 Java 中的一个关键字,它在继承的上下文中特别有用。super 引用了当前对象的直接父类,它可以用来访问父类中的属性、方法和构造函数。以下是 super 的几个主要用途: 1. 调用父类的构造函数 在子类的构造函数中,你可以使…...

STM32之HAL开发——系统定时器(SysTick)
系统定时器(SysTick)介绍 SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当…...

Redis 不再“开源”:中国面临的挑战与策略应对
Redis 不再“开源”,使用双许可证 3 月 20 号,Redis 的 CEO Rowan Trollope 在官网上宣布了《Redis 采用双源许可证》的消息。他表示,今后 Redis 的所有新版本都将使用开源代码可用的许可证,不再使用 BSD 协议,而是采用…...

刚刚,百度和苹果宣布联名
百度 Apple 就在刚刚,财联社报道,百度将为苹果今年发布的 iPhone16、Mac 系统和 iOS18 提供 AI 功能。 苹果曾与阿里以及另外一家国产大模型公司进行过洽谈,最后确定由百度提供这项服务,苹果预计采取 API 接口的方式计费。 苹果将…...

HTTP系列之HTTP缓存 —— 强缓存和协商缓存
文章目录 HTTP缓存强缓存协商缓存状态码区别缓存优先级如何设置强缓存和协商缓存使用场景 HTTP缓存 HTTP缓存时利用HTTP响应头将所请求的资源在浏览器进行缓存,缓存方式分两种:强缓存和协商缓存。 浏览器缓存是指将之前请求过的资源在浏览器进行缓存&am…...

代码+视频,R语言logistic回归交互项(交互作用)的可视化分析
交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性,不仅如此,交互作用还可以使用来进行数据挖掘。在既往文章中,我们已…...

实验3 中文分词
必做题: 数据准备:academy_titles.txt为“考硕考博”板块的帖子标题,job_titles.txt为“招聘信息”板块的帖子标题,使用jieba工具对academy_titles.txt进行分词,接着去除停用词,然后统计词频,最…...

ReentrantLock 原理
(一)、非公平锁实现原理 1、加锁解锁流程 先从构造器开始看,默认为非公平锁实现 public ReentrantLock() {sync new NonfairSync(); } NonfairSync 继承自 AQS 没有竞争时 加锁流程 构造器构造,默认构造非公平锁(无竞争,第一个线程尝试…...

星云小窝项目1.0——项目介绍(一)
星云小窝项目1.0——项目介绍(一) 文章目录 前言1. 介绍页面2. 首页2.1. 游客模式2.2. 注册用户后 3. 星云笔记3.1. 星云笔记首页3.2. 星云笔记 个人中心3.2. 星云笔记 系统管理3.3. 星云笔记 文章展示3.3. 星云笔记 新建文章 4. 数据中心5. 交流评论6. …...
VR虚拟仿真在线模拟旅游专业情景
旅游专业运用VR虚拟仿真教学的教学优势主要包括: 1. 增强教学效果:VR技术能够提供身临其境的体验,使学生更容易理解和记住某些概念和理论。例如,学生可以通过虚拟旅行来了解某个国家的文化、历史和景点,这将比传统的课…...

ROS 2边学边练(3)-- 何为节点(nodes)
在接触节点这个概念之前,我们先来看看下面这张动态图,更方便我们理解一些概念和交互过程。 (相信大家的英文基础哈) 概念 如上图所示,这里面其实涉及到了三个概念(功能),分别是节点…...

MySQL的主从复制和读写分离
目录 相关知识: 1. 主从复制和读写分离 2. mysql 支持的复制类型 对比: 一. 主从复制 1. 原理和工作过程 工作过程: 注意: 中继日志(Relay Log): 2. 一些理解问题 2.1 为什么要复制 …...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...