蓝桥杯刷题-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 个台阶,我们有两种选择:

  1. 从第 i-1 个台阶向上爬一个台阶,花费为 dp[i-1] + cost[i-1]。
  2. 从第 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 个字符,我们有两种选择:

  1. 将其作为单独的一个字母进行解码,前提是第 i 个字符不为 ‘0’。在这种情况下,我们可以将前 i-1 个字符解码的方法数加到 dp[i]上,即 dp[i] += dp[i-1]。
  2. 将其与前一个字符一起解码,形成一个两位数。前提是第 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];}
};

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

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

相关文章

pygame用chatgpt绘制3d沿x轴旋转的

import pygame from pygame.locals import * import sys import mathpygame.init()width, height 800, 600 screen pygame.display.set_mode((width, height))vertices [(0, 100, 0), (100, 200, 0), (300, 100, 0)]angle 0 rotation_speed 2 # 可根据需要调整旋转速度 c…

CXL系统架构

CXL系统架构 CXL支持三种设备类型&#xff0c;如下图。Type 1支持CXL.cache和CXL.io&#xff1b;Type 2支持CXL.cache&#xff0c;CXL.mem和CXL.io&#xff1b;Type 3支持CXL.mem和CXL.io。无论哪种类型&#xff0c;CXL.io都是不可缺少的&#xff0c;因为设备的发现&#xff0…

图像处理与视觉感知---期末复习重点(5)

文章目录 一、膨胀与腐蚀1.1 膨胀1.2 腐蚀 二、开操作与闭操作 一、膨胀与腐蚀 1.1 膨胀 1. 集合 A A A 被集合 B B B 膨胀&#xff0c;定义式如下。其中集合 B B B 也称为结构元素&#xff1b; ( B ^ ) z (\hat{B})z (B^)z 表示 B B B 的反射平移 z z z 后得到的新集合。…

自定义类型---结构体(下)和联合体

struct结构体--struct的对齐规则&#xff1a;先看一个代码&#xff1a; #include<stdio.h> #include<string.h> //struct的对齐规则 struct S {char a;int b;char n; }; int main() {struct S s;printf("%d ", sizeof(struct S));return 0; } 这个代码中…

MySQl基础入门 ⑮

上一遍文章内容 使用语句创建视图 还是用上次的三个表&#xff0c;如果没有创建&#xff0c;点击上一遍文章内容创建即可。 什么叫视图 视图是一个或多个表中导出来的表&#xff0c;它是一种虚拟存在的表&#xff0c;并且表的结构数据都依赖基本表&#xff0c;通过视图不仅…

js改变图片曝光度(高亮度)

方法一&#xff1a; 原理&#xff1a; 使用canvas进行滤镜操作&#xff0c;通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg&#xff0c;而不是canvas 调整出来的效果不是很好&#xff0c;图片不是高亮&#xff0c;而是有些发白 效果 代码 …

鸿蒙OS开发实例:【工具类封装-首选项本地存储】

import dataPreferences from ohos.data.preferences; import bundleManager from ohos.bundle.bundleManager; 本地首选项数据的保存&#xff0c;利用key value 【使用要求】 DevEco Studio 3.1.1 Release api 9 【使用示例】 1、app启动时&#xff0c;从本地读取数据&…

Linux文件(系统)IO(含动静态库的链接操作)

文章目录 Linux文件&#xff08;系统&#xff09;IO&#xff08;含动静态库的链接操作&#xff09;1、C语言文件IO操作2、三个数据流stdin、stdout、stderr3、系统文件IO3.1、相关系统调用接口的使用3.2、文件描述符fd3.3、文件描述符的分配规则3.3、重定向3.4、自制shell加入重…

Docker 夺命连环 15 问

目录 什么是Docker&#xff1f; Docker的应用场景有哪些&#xff1f; Docker的优点有哪些&#xff1f; Docker与虚拟机的区别是什么&#xff1f; Docker的三大核心是什么&#xff1f; 如何快速安装Docker&#xff1f; 如何修改Docker的存储位置&#xff1f; Docker镜像常…

三位数组合-第12届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第42讲。 三位数组合&#…

项目中线程池的应用

1、首先我们需要在配置类中将线程池作为单例bean配置 Configuration public class ThreadPoolExecutorConfig {BeanExecutorService executorService(){return new ThreadPoolExecutor(2,3,0,TimeUnit.MICROSECONDS,new ArrayBlockingQueue<>(3),(r)->new Thread(r,&…

揭露非法集资陷阱!

常见的非法集资手法 犯罪分子利用了社会公众的哪些心理&#xff1f; 使用了怎样的措辞&#xff1f; 一起来揭露非法资金集聚的几个陷阱&#xff01; 拐弯抹角地向亲朋好友承诺大额回报&#xff0c;希望他们加入&#xff08;利用社会认同原则&#xff09;。 不法分子造了个传…

精灵传信系统 匿名性系统 支持网站+小程序双端源码

精灵传信支持在线提交发送短信&#xff0c;查看回复短信&#xff0c;在线购买额度&#xff0c;自定义对接易支付&#xff0c;设置违禁词&#xff0c;支持网站小程序双端。 项目 地 址 &#xff1a; runruncode.com/php/19720.html 环境要求: PHP > 73 MySQL>5.6 Ngi…

【算法-PID】

算法-PID ■ PID■ 闭环原理■ PID 控制流程■ PID 比例环节&#xff08; Proportion&#xff09;■ PID 积分环节&#xff08;Integral&#xff09;■ PID 微分环节&#xff08;Differential&#xff09; ■ PID PID 分别是 Proportion&#xff08;比例&#xff09;、 Integr…

RK3588平台开发系列讲解(硬件篇-最小系统设计)

目录 系统概述 概述 系统框图 应用框图 最小系统设计 时钟&#xff1a; 复位/看门狗/TSADC电路&#xff1a; 系统启动引导顺序&#xff1a; 系统概述 概述 RK3588 是一颗高性能、低功耗的应用处理器芯片&#xff0c;由4个Cortex-A76和4个Cortex-A55 及独立的 NEON协处理…

编程语言|C语言——C语言变量的存储方式

前言 变量是程序中数据的存储空间的抽象。变量的存储方式可分为静态存储和动态存储两种。 静态存储变量通常是在程序编译时就分配一定的存储空间并一直保持不变&#xff0c;直至整个程序结束。在上一部分中介绍的全局变量的存储方式即属于此类存储方式。 动态存储变量是在程序执…

C++自主点餐系统

一、 题目 设计一个自助点餐系统&#xff0c;方便顾客自己点餐&#xff0c;并提供对餐厅销售情况的统计和管理功能。 二、 业务流程图 三、 系统功能结构图 四、 类的设计 五、 程序代码与说明 头文件1. SystemMap.h #pragma once #ifndef SYSTEMMAP #define SYSTEMMAP #in…

集体出走的Stability AI 发布全新代码大模型,3B以下性能最优,超越Code Llama和DeepSeek-Coder

Stability AI又有新动作&#xff01;程序员又有危机了&#xff1f; 3月26日&#xff0c;Stability AI推出了先进的代码语言模型Stable Code Instruct 3B&#xff0c;该模型是在Stable Code 3B的基础上进行指令调优的Code LM。 Stability AI 表示&#xff0c;Stable Code Instru…

3款免费甘特图制作工具的比较和选择指南

GanntProject GanttProject https://www.ganttproject.biz/ 是一款项目管理和调度应用&#xff0c;适用于 Windows、macOS 和 Linux。它易于使用&#xff0c;无需任何设置&#xff0c;适用于个人用户和小型团队。该应用提供任务层次结构和依存关系、里程碑、基准行、Gantt 图表…

WordPress Git主题 响应式CMS主题模板

分享的是新版本&#xff0c;旧版本少了很多功能&#xff0c;尤其在新版支持自动更新后&#xff0c;该主题可以用来搭建个人博客&#xff0c;素材下载网站&#xff0c;图片站等 主题特点 兼容 IE9、谷歌 Chrome 、火狐 Firefox 等主流浏览器 扁平化的设计加响应式布局&#x…