力扣第70题:爬楼梯 动态规划DP入门(C++)

动态规划01爬楼梯(C++) 爬楼梯题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 用递归的思路来解的话,先找return点 f(0)=0; f(1)=1; f(2)=2; 然后找循环的点,可以可以画一下图 假设n为5的情况。 可以发现爬上第五个台阶的方法就等于第四阶加第三阶。 所以得出 f(n)=f(n-1)=f(n-2) 很像斐波那契数列。 然后用递归写出代码 #include<iostream> #inclu 阅读详情

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

思路

什么叫动态规划?我们分割原始问题为多个子问题,在遍历数据的过程中,如果能根据之前得到的信息动态解决当前的子问题,那么就可以在线性时间内解决很多需要多次遍历的问题。

动态规划使用“状态”概念来表示问题求解的特定阶段,每个状态都对应一个子问题以及相应的局部最优解。
有以下三个定义:
将动态规划所用的数组称为 dp 表,表示对应子问题的解。
将最小子问题对应的状态称为初始状态。
将递推公式称为状态转移方程。

本题中定义ans[i]为dp表,表示走到第i个台阶的方法数。

解题过程

对于本题目,他的dp表中ans[0]=0,ans[1]=1,ans[2]=2,此为初始状态。

我们开始遍历,从i=3开始,我们对ans[i]施加状态转移方程ans[i]=ans[i-1]+ans[i-2],什么意思呢?走到第i个台阶的方法是走到第i-1个台阶的方法和第i-2个台阶的方法之和。(i可以通过i-1或i-2号台阶走上去)
得到所有的状态后,输出答案即可。

复杂度
时间复杂度: O(n)
空间复杂度: O(n)
动态规划击败100%

Code

class Solution {
public:
    int climbStairs(int n) {
        if(n==1)return 1;
        else if(n==2)return 2;
        int ans[n+1];ans[0]=0,ans[1]=1,ans[2]=2;
        for(int i=3;i<n+1;i++)ans[i]=ans[i-1]+ans[i-2];
        return ans[n];
    }
};

ncode控件使用总结 数据格式txt转s3t #HEADER #TITLES Absolute_Time,COG_Ax,COG_Ay,COG_Az,LF_SPINDLE_AZ #UNITS ,g,g,g,g, #DATATYPES Double,Float,Float,Float,Float #DATA 2. 导入s3t数据 3. 输入数据控件 直接拖入数据源或者添加控件数据 4. 阅读详情

相关推荐

伺服驱动器485控制(1):使用串口软件来读参数

下面介绍如何读伺服驱动器的一圈脉冲数,通过查看伺服驱动器说明书,得知一圈脉冲数的参数是PA11 其通讯地址是十进制 11 十六进制 0A, 串口软件指令都是以十六进制表示,字节单位。注意:485通讯地一定要接,如果不接可能会通讯异常,假如上位机没有485通讯地,而接了两根485+ 和485-,出现通讯不好和反应慢的情况,请把485GND接在上位机0V。笔记本的网口不要和驱动器了网口用网线连接,笔记本网口是以太网,伺服驱动器网口是485。通过驱动器按键面板查看PA11的参数是10000,因此数据对的上。

weixin_39727602的博客 5131

从爬楼梯到斐波那契:用C/C++讲透LeetCode 70题的动态规划本质

本文通过LeetCode 70题'爬楼梯'问题,深入解析动态规划的核心思想与应用。从暴力递归到记忆化搜索,再到标准动态规划解法及空间优化,详细展示了C/C++实现过程。文章揭示了该问题与斐波那契数列的数学联系,并总结了动态规划的通用思维框架,帮助读者掌握算法设计的精髓。

weixin_33700350的博客 396

NuPlayer 之 Renderer

触发postDrainAudioQueue_l()或postDrainVideoQueue()开始渲染。解码器输出数据 → NuPlayer::Decoder::onMessageReceived。音频数据存入mAudioQueue,视频数据存入mVideoQueue。• 每次写入后通过mNotifyConsumed通知解码器。• 通过AudioSink::write()写入音频设备。• 根据VSync信号和音频时钟调整渲染时机。• 通过Surface直接提交给显示系统。

aningxiaoxixi的博客 312

爬楼梯

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶。 1 阶 + 1 阶 + 1 阶 1 阶 + 2 阶 2 阶 + 1 阶 动态规划 我们用 f(x) 表示爬到第 x 级台阶的方案数,考虑最后一步可能跨了一级台阶,也可能跨了两级台

qq_36314864的博客 430

A2B音频总线在智能座舱中的应用

车载A2B链路音频是智能座舱的核心功能,涵盖车载音响、语音识别、e-Call、消噪及回声消除等应用,随着汽车智能网联化的发展,对音频的开发要求也越来越高,需要加入更先进、功能丰富的信息娱乐功能以满足消费者的用户体验。但传统的模拟并行音频信号传输方式,难以在功能增加与整车轻量化(线缆的重量及成本减少)之间取得均衡。这时候就需要A2B音频总线了。A2B音频总线用于连接车辆中的音频设备,如麦克风(MIC)、功放(AMP)、多媒体主机(Head Unit)和T-BOX等。通过一条低成本的非屏蔽双绞线UTP,进行跨距

怿星科技的博客 3934

【STM32】从零构建串口IAP框架:BootLoader与App双向跳转实战解析

本文详细解析了STM32串口IAP框架的构建,重点阐述了BootLoader与App双向跳转的实战原理与实现步骤。内容涵盖Flash分区规划、中断向量表重定向、通信协议设计及固件升级流程,并针对跳转失败、程序跑飞等常见问题提供了解决方案,帮助开发者掌握产品级远程升级的核心技术。

wind6的博客 838

C++ 爬楼梯 动态规划

在爬楼梯时,每次可向上走1阶台阶或2阶台阶,问有n阶楼梯有多少种上楼的方式? 方法一:暴力搜索,回溯法 #include<stdio.h> class Solution { public: Solution() {} ~Solution() {} int climbStairs(int n) { if (n==1||n==2) { return n; } ...

weixin_44208324的博客 1657

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 811

C++——数楼梯(动态规划+高精度压缩)

C++动态规划——数格子

Fizzoa的博客 1501

Qt界面美化-飞扬青云自绘控件插件的使用-避免采坑

1、先上一个集成到QtCreater中的效果图: 2、飞扬青云自绘控件插件下载地址:https://gitcode.net/mirrors/feiyangqingyun/qucsdk?utm_source=csdn_github_accelerator 3、集成插件到QtCreater中的方法: (1)、查看自己使用的QtCreater的版本信息,我的:Qt 5.15.2 MSVC2019 64位 (2)插件下载下来后工程预览: 我选择msvc版本的SDK,打开找到匹配的SDK:...

小米的修行之路 2793

GEE:大面积研究区域数据分块导出,以解决内存限制和导出失败的问题

本文介绍了在Google Earth Engine (GEE)平台分块导出大面积研究区域数据的方法。针对直接导出大区域影像易失败的问题,作者提出通过网格分块技术进行处理。文章展示了完整的JavaScript代码示例,包含定义研究区域、加载ESA WorldCover数据集、设置分块参数(包括像素大小、分块尺寸)、创建网格系统、处理坐标转换等关键步骤。代码中还提供了错误处理和导出按钮功能,确保数据能可靠地分块导出到Google Drive。该方法有效解决了大区域数据导出时的内存限制问题,适用于全球范围的研究。

养乐多的博客 1186

力扣70.爬楼梯 C++ 动态规划基础

爬到第⼀层楼梯有⼀种⽅法,爬到⼆层楼梯有两种⽅法。那么第⼀层楼梯再跨两步就到第三层 ,第⼆层楼梯再跨⼀步就到第三层。所以到第三层楼梯的状态可以由第⼆层楼梯 和 到第⼀层楼梯状态推导出来,那么就可以想到动态规划了。

qq_63524016的博客 490

Dify 系列教程 | 第 6 篇:工作流入门 -- 用可视化方式编排 AI 逻辑

Dify 工作流是一个基于有向无环图(DAG)的可视化 AI 逻辑编排系统。你可以把多个处理步骤(节点)用连线串联起来,数据从起点流向终点,每经过一个节点就被处理一次。用一个类比来理解:如果单次 Prompt 调用是"一道菜",那工作流就是"一道完整的生产线" – 原材料(输入)进入流水线,经过清洗(预处理)、切配(数据转换)、烹饪(AI 推理)、装盘(格式化输出)等工序,最终产出成品。创建一个工作流类型的应用(或高级聊天类型),就会进入工作流编辑器。编辑器基于ReactFlow构建(

weixin_43674738的博客 119

力扣第 70 题:爬楼梯问题(Climbing Stairs)

定义dpidp[i]dpi表示爬到第iii级台阶的方法数。通过递归结合记忆化存储,成功解决了爬楼梯问题。避免了重复计算,性能优于纯递归。逻辑清晰,容易理解。如果对递归不熟悉,也可以通过迭代法或动态规划表实现,进一步优化空间复杂度。有关更多动态规划问题,欢迎继续关注!

weixin_48941116的博客 1539

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Leetcode70——爬楼梯(斐波那契类型)(C语言)(通过该问题讲解动态规划基本思想)

Fibonacci数列的例子可以得到,动态规划的关键在于解决重叠子问题的重复计算,将原来指数级复杂度的分治算法改进多项式级的计算。 在实现过程中,动态规划算法需要存储各子问题的解,所以它的空间复杂度大于其他算法,这是一种空间换时间的策略。

StarPrayers.的博客 2148

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

力扣70. 爬楼梯(递归、动态规划、斐波那契数列)

力扣70. 爬楼梯 https://leetcode-cn.com/problems/climbing-stairs/ 假设你正在爬楼梯。需要 n阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示...

小麦China的博客 730

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

70. 爬楼梯【 力扣(LeetCode) 】

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

yyh520025的博客 1577

LeetCode--70. 爬楼梯(动态规划)

爬楼梯(动态规划)1. 题目描述2. 题目分析3. C语言实现 1. 题目描述 难度:简单 2. 题目分析 爬楼梯这道题是一个很典型的问题了,这是一道经典的动态规划的问题: 动态规划 不难发现,这个问题可以被分解为一些包含最优子结构的子问题,即它的最优解可以从其子问题的最优解来有效地构建,我们可以使用动态规划来解决这一问题。 时间复杂度O(n), 空间复杂度O(n)。 3. C语言实现 代...

魔法师の屋子★↓☆ 3472

[力扣c语言实现]70. 爬楼梯

70. 爬楼梯1. 题目描述2.代码如下3.动态规划的思想总结 1. 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1 阶 + 1 阶 2 阶 示例 2: 输入: 3 输出: 3 解释: 有三种方法可以爬到楼顶...

dengwodaer的博客 721

从斐波那契到爬楼梯:用C/C++讲透动态规划入门(附LeetCode 70题保姆级代码)

本文通过LeetCode 70题爬楼梯问题,详细讲解动态规划(DP)在C/C++中的实现方法。从暴力递归到记忆化搜索,再到标准DP和空间优化技巧,逐步拆解DP的核心思想与应用场景,帮助读者掌握算法优化的关键步骤。

weixin_30765577的博客 398

LeetCode—70.爬楼梯(Climbing Stairs)——分析及代码(C++)

LeetCode—70.爬楼梯[Climbing Stairs]——分析及代码[C++]一、题目二、分析及代码1. 动态规划(1)思路(2)代码(3)结果三、其他 一、题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼顶。 1....

江南土豆的博客 504

Leetcode简单70题 爬楼梯——动态规划思想,代码简单

Leetcode70 简单动态规划

BeAr_violet的博客 351

【LeetCode刷题笔记】动态规划 — 70.爬楼梯

假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?三、题目分析 根据题目一次1个或2个台阶,先考虑极端情况:只有一个台阶的情况和只有两个台阶的情况 只有一个台阶:1种方法:爬1个台阶 只有两个台阶:2种方法:爬两次1个台阶、爬一次2个台阶 在两个台阶的问题中,第一种方法包含了只有一个台阶的情况(爬两次1个台阶:即爬了一个台阶,此时只剩下一个台阶,转化为了只有一个台阶的问题) 三个台阶时,如果爬1个台阶,还剩2个台阶,转化为了2个台阶的问题

努力让自己的能力配得上梦想. 332

Java版LeetCode热题100之爬楼梯:从动态规划到矩阵快速幂的全方位解析

要到达第n阶,最后一步要么是从第(n-1)阶走1步上来要么是从第(n-2)阶走2步上来因此,到达第n阶的方法数 = 到达第(n-1)阶的方法数 + 到达第(n-2)阶的方法数问题本质:斐波那契数列的计数问题最优解法空间优化的动态规划,时间O(n),空间O(1)高级优化:矩阵快速幂O(log n),适用于超大规模数学本质:线性递推关系,具有丰富的数学性质适用场景:任何需要计算线性递推序列的问题。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 1244

LeetCode 热题 100 精讲 | 动态规划篇:爬楼梯 · 杨辉三角 · 打家劫舍 · 完全平方数 · 最长递增子序列 · 零钱兑换

线性递推(爬楼梯)、二维表格填充(杨辉三角)、决策选择(打家劫舍)、完全背包(完全平方数、零钱兑换)、子序列问题(最长递增子序列)。这些题的共同特点是需要找出状态定义和状态转移方程,一旦找到正确的 DP 方程,代码实现往往很简洁。建议刷题顺序:先做爬楼梯和杨辉三角建立信心,再做打家劫舍理解决策类 DP,然后攻克完全平方数和零钱兑换掌握背包思想,最后用最长递增子序列收尾。下一篇将进入动态规划进阶篇(最大子数组和、分割等和子集、最长公共子序列等),敬请期待。免责声明。

2302_81155164的博客 801

【动态规划】LC 70.爬楼梯

摘要: 本文解析LeetCode热题70.爬楼梯,提供两种解题思路。动态规划法:定义dp[i]为爬到第i阶的方法数,状态转移方程为dp[i] = dp[i-1] + dp[i-2],初始化dp[1]=1、dp[2]=2,时间复杂度O(n),空间复杂度O(n)。递归法:直接递归求解,但因重复计算导致时间复杂度过高(O(2^n)),易超时。推荐使用动态规划,避免重复子问题,效率更优。

你的博客 243
上一篇: 「字符串」Manacher算法(马拉车)/ LeetCode 05(C++)
下一篇: 力扣第46题:全排列 库函数next_permutation与sort介绍()
Daking-
博客等级 码龄3年 912粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值