【算法】动态规划1,最小花费爬楼梯,解码方法

news/2025/2/16 0:28:25/

一、动态规划简介

动态规划 , 英文名称 Dynamic Programming , 简称 DP , 不是具体的某种算法 , 是一种算法思想 ;

动态规划 , 没有具体的步骤 , 只有一个核心思想 ;
动态规划 的 核心思想 是 由大化小 , 大规模问题 使用 小规模问题 计算结果 解决 , 类似于 分治算法 ;

二、动态规划解题步骤

在这里插入图片描述

三、例题

例题1

在这里插入图片描述

通过分析最近的一步来划分问题:
在这里插入图片描述

class Solution {
public:int minCostClimbingStairs(vector<int>& cost) {int n = cost.size();vector<int> dp(n+1);for(int i = 2; i<=n; i++){dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[n];}
};

例题2:

在这里插入图片描述
分析过程:
看最近一步操作dp[i] 与s[i]和s[i-1] 的解码关系有关;
1.如果s[i]单独解码,在1~9就可以解码,但是题目问的是解码方法的总数,在之前的所有解码类型后面加一个相同的字母,解码方法并不会变化,等于dp[i-1] (上一个dp的解码总数) ,解码总类变了而已,失败就为0。
2.如果s[i]与s[i-1]解码,在10~26内解码成功,但是解码方法总数不会变化,等于dp[i-2] (上两个dp的解码总数),失败就为0.
所以dp[i] = dp[i-1] + dp[i+2];

但是,并不能直接带入,需要依次判断后加入,因为一旦单独解码或者一起解码失败的话就直接归0了。
在这里插入图片描述

class Solution {
public:int numDecodings(string s) {int n = s.size();vector<int> dp(n);//创建dp表dp[0] = (s[0] != '0');//初始化dp[0],dp[1]if(n == 1) return dp[0];//边界情况int ret = (s[0]-'0')*10 + (s[1] - '0');if(ret >= 10 && ret <= 26) dp[1]++;if(s[1] != '0' && s[0] != '0') dp[1]++;//填表for(int i = 2; i<n; i++){if(s[i] !='0') dp[i] +=dp[i-1];//需要依次判断加入int 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.ppmy.cn/news/1357054.html

相关文章

用Python绘画爱心

下面小编这段代码使用了Python的turtle模块&#xff0c;一个流行的绘图库&#xff0c;用于初学者学习编程和图形绘制。 下面是对整段代码的概括性分析&#xff1a; 导入模块&#xff1a;首先&#xff0c;代码导入了turtle模块&#xff0c;这是Python的一个内置模块&#xff0c…

【设计模式】23种设计模式笔记

设计模式分类 模板方法模式 核心就是设计一个部分抽象类。 这个类具有少量具体的方法&#xff0c;和大量抽象的方法&#xff0c;具体的方法是为外界提供服务的点&#xff0c;具体方法中定义了抽象方法的执行序列 装饰器模式 现在有一个对象A&#xff0c;希望A的a方法被修饰 …

WordPress主题YIA移动端文章页的面包屑不显示怎么办?

平时我们一般都会在文章页导航菜单下方显示面包屑&#xff0c;类似于“当前位置&#xff1a;boke112百科 WordPress 正文”。平时用浏览器调试站点的时候&#xff0c;在Edge浏览器的“切换设备仿真”中&#xff0c;不管是选择什么设备都会显示面包屑。具体如下图所示&#xf…

银行接口测试学习笔记:接口测试从分析到设计!

一、接口测试流程 01\接口测试计划 制定:人员,工具/平台,脚本,时间,标准,输出接口测试计划文档 02\银行接口文档解析 ①.接口名称:说明接口的作用,不用测试 ②.接口地址:http开头,和URL一样,不用测试 ③.请求方式:post/get/delete/put, 当一个接口有多个方式的时候是需要进…

代码随想录算法训练营第50天(动态规划07 ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

动态规划part07 70. 爬楼梯 &#xff08;进阶&#xff09;解题思路总结 322. 零钱兑换解题思路总结 279.完全平方数解题思路 70. 爬楼梯 &#xff08;进阶&#xff09; 这道题目 爬楼梯之前我们做过&#xff0c;这次再用完全背包的思路来分析一遍 文章讲解&#xff1a; 70. 爬…

从零开始手写mmo游戏从框架到爆炸(十四)— 英雄和野怪

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 之前都是模板的创建&#xff0c;现在我们来创建英雄和野怪。 枚举类 首先创建几个枚举类&#xff0c;定义野怪的品质和血统等。 LevelExpEnum - 每升一级需要的经验 …

SpringBoot+Vue+MySQL:图书管理系统的技术革新

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

docker安装milvus后,无法打开attu,日志报错

背景&#xff0c;在虚拟机用docker安装milvus后&#xff0c;正常访问attu&#xff0c;过段时间挂机后无法访问 日志报错&#xff1a; [2024/02/19 06:59:46.761 00:00] [ERROR] [grpcclient/client.go:330] ["ClientBase ReCall grpc second call get error"] [rol…