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

力扣70:爬楼梯

力扣70:爬楼梯

  • 题目
  • 思路
  • 代码

题目

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

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

思路

首先我们先列出来前几个台阶的答案从第一个开始:1,2,3,5。前几个台阶我们比较好想所以可以直接算出来,我们发现这里面是不是有什么规律啊,第三个台阶的答案是一二台阶的和,第四个台阶的答案是二三台阶的和。这是巧合还是规律呢?我们可以再写后面两个的答案或者仔细观察一下题目。
这就是规律不是巧合,为什么呢?题目说了我们每次只能爬一个或两个台阶那么我们想要爬到第四个台阶是不是只能从第二个一下走两个台阶到或者从第三个一下走一个台阶到。所以呢想要到第四个台阶我们必须先到第二个或者第三个台阶,他们俩有各有多少种走法相加不就是第四个台阶的走法吗?所以从第三个台阶开始每层台阶的答案就是前两层台阶的答案相加,我们假设f(n)是第n层台阶的走法,那么f(n) = f(n-2) + f(n-1)。
那么有了这个方程我们不就可以最底层开始一步一步的算到第n层吗,不就得到答案了吗?这道题用到的思想是动态规划,我们可以发现我们每层得到的数都是这层的最终答案也就是把题目从得到第n层方法转换为了得到第n-2,第n-1层台阶的答案以此类推最终到第0层。所以既然能从上往下推也就可以从下往上得到答案,这就是动态规划的思想也就是把一个问题拆成子问题然后通过得到子问题的答案来推得原来问题的答案。而上面那个方程就是转换方程。

代码

class Solution {
public:int climbStairs(int n) {// 先得出爬一楼和二楼的值int p = 1;int q = 2;if (n == 1) {return p;} else if (n == 2) {return q;} else {// 从三楼开始// 因为我们一次只能爬一楼或者二楼// 所以从第三层开始每层的方法就等于// 前两楼的方法的总和int r = 0;for (int i = 3; i <= n; i++) {r = p + q;p = q;q = r;}return r;}}
};
http://www.xdnf.cn/news/18122.html

相关文章:

  • Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
  • 功能测试相关问题
  • CNN-BiLSTM-Attention、CNN-BiLSTM、BiLSTM三模型多变量时序光伏功率预测
  • Maven 生命周期和插件
  • shell脚本第一阶段
  • 自学中医笔记(二)
  • Mysql——分库分表后id冲突解决方案(即分布式ID的生成方案)
  • 【tips】unsafe-eval线上页面突然空白
  • python实现pdfs合并
  • Ansible 部署LNMP
  • Read View 在 MVCC 里如何工作的?
  • 下载大模型经常遇到的报错Still waiting to acquire lock on Wan2.1-VACE-14B/.cache与解决办法
  • Linux系统WireShark抓取本地网卡报文
  • 发布npmjs组件库
  • 套接字超时控制与服务器调度策略
  • 多台服务器批量发布arcgisserver服务并缓存切片
  • 开发指南133-设定列表分页的初始默认每页行数
  • vue从入门到精通:搭建第一个vue项目
  • 【React Hooks】封装的艺术:如何编写高质量的 React 自-定义 Hooks
  • Rust学习笔记(六)|Rust 中的常用集合(Vector、String、HashMap)
  • Rust 异步中的 Waker
  • Linux权限的学习
  • 概率论基础教程第4章 随机变量(三)
  • 【opencv-Python学习笔记(7):图像平滑处理】
  • IntelliJ IDEA 开发配置教程
  • 独立看门狗(IWDG)
  • 决策树简单实战
  • 「数据获取」《防城港市统计年鉴》(2014-2020)(获取方式看绑定的资源)
  • 图像分类精度评价的方法——误差矩阵、总体精度、用户精度、生产者精度、Kappa 系数
  • 详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。