当前位置: 首页 > news >正文

leetcode每日一练-第70题-爬楼梯

 

一、思路

动态规划

二、解题方法

使用一个动态规划数组 dp 来记录到达每个台阶的不同方法数。初始情况下,当台阶数为 1 时,方法数为 1,当台阶数为 2 时,方法数为 2。然后,我们从第 3 阶开始逐步计算每一阶的方法数,方法数等于前一阶和前两阶方法数之和。最终,我们返回 dp[n],即到达 n 阶台阶的不同方法数。

三、code

class Solution {
public:int climbStairs(int n) {if(n<=2){return n;}vector<int> dp(n+1,0);//使用一个动态规划数组 dp 来记录到达每个台阶的不同方法数//是一个用来存储动态规划状态的向量(数组),其中 n + 1 是数组的大小,初始化值都为 0。//在动态规划中,状态通常用一个数组(或向量)来表示,每个元素对应不同状态的解。在这个例子中,dp 数组的长度是 n + 1,表示有 n + 1 个不同的状态,索引从 0 到 n。dp[1]=1;dp[2]=2;//在动态规划的过程中,你会填充 dp 数组,其中 dp[i] 表示到达第 i 阶楼梯的不同方法数。最终,当你求解完整个数组后,你需要返回 dp[n],即到达楼顶的不同方法数。for(int i=3;i<=n;++i){dp[i]=dp[i-1]+dp[i-2];//从第 3 阶开始逐步计算每一阶的方法数,方法数等于前一阶和前两阶方法数之和}return dp[n];//dp[n] 表示到达楼顶的不同方法数,其中 n 是楼梯的总阶数}
};

=========================================================================学到的知识:

① 

动态规划(Dynamic Programming,简称 DP)是一种解决问题的算法思想,通常用于求解具有重叠子问题和最优子结构性质的问题。它通过将问题分解为子问题并存储子问题的解,以避免重复计算,从而提高算法的效率。

动态规划常用于求解最优化问题,比如最短路径、最长公共子序列、背包问题等。它的核心思想是将原问题拆分为更小的子问题,然后通过解决子问题来解决原问题。在解决子问题时,动态规划会使用一种记忆化的方法,将子问题的解保存在数据结构中,以便后续直接获取,避免重复计算。

动态规划通常分为自顶向下和自底向上两种方式:

  1. 自顶向下:从大问题开始,逐步分解为子问题,然后通过递归或记忆化搜索来解决子问题。

  2. 自底向上:从小问题开始,逐步构建出更大的问题的解,通常采用迭代的方式,从子问题的解推导出原问题的解。

动态规划在算法设计和优化中具有广泛应用,能够有效地提高问题的求解效率,但也需要合理的状态定义、状态转移方程和边界条件来确保正确性。

vector<int> dp(n + 1, 0); 是一个用来存储动态规划状态的向量(数组),其中 n + 1 是数组的大小,初始化值都为 0

在动态规划中,状态通常用一个数组(或向量)来表示,每个元素对应不同状态的解。在这个例子中,dp 数组的长度是 n + 1,表示有 n + 1 个不同的状态,索引从 0n

http://www.lryc.cn/news/115985.html

相关文章:

  • 设备使用RTMP推流到安防监控EasyCVR视频汇聚平台,为何只有FLV格式无法播放?
  • arcgis宗地或者地块四至权利人信息提取教程
  • 乐鑫首创|使用 ESP RainMaker® 私有云定制 Matter 生态
  • 【算法|数组】快慢指针
  • C++字符串:使用 std::string
  • 目前Java后端就业前景怎么样?
  • C语言基础(持续更新)
  • 从源码层面深度剖析Spring循环依赖 | 京东云技术团队
  • Distance 2023牛客暑期多校训练营6 B
  • 【Pandas】学习笔记之groupby()、agg()、transform()
  • 使用正则表达式 移除 HTML 标签后得到字符串
  • Java中String方法魔性学习
  • Smartbi 权限绕过漏洞复现(QVD-2023-17461)
  • springboot自定义错误消息
  • 微信小程序申请步骤
  • 嘉楠勘智k230开发板上手记录(四)--HHB神经网络模型部署工具
  • 微信小程序的自定义TabBar及Vant的使用
  • canvas实现代码雨
  • 基于MFCC特征提取和HMM模型的语音合成算法matlab仿真
  • 多重网格算法的cuda编程
  • DP(状态机模型)
  • 按照指定的文件顺序进行scp传输
  • 小红书数据分析丨现实版模拟人生,这届网友热衷于“云开店”?
  • 休闲卤味强势崛起:卤味零食成为新一代热门美食
  • 自除数-C语言
  • -bash: ./startup.sh: Permission denied解决
  • Java课题笔记~ AOP 概述
  • 真我V3 5G(RMX2200 RMX2201)解锁刷机全过程
  • springCache-缓存
  • 【solon生态】- solon.cloud.micrometer插件使用指南及micrometer详解