首页 > 试题广场 >

爬楼梯

[编程题]爬楼梯
  • 热度指数:17680 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。
请问计算出你可以采用多少种不同的方式爬完这个楼梯。

输入描述:
一个正整数n(n<=100),表示这个楼梯一共有多少阶


输出描述:
一个正整数,表示有多少种不同的方式爬完这个楼梯
示例1

输入

5

输出

8
头像 牛客newsj
发表于 2022-12-08 17:28:11
一个经典的递推问题,值得注意的是要使用科学计数法,到92个阶梯就会超出long的表示范围。假设有n阶阶梯,每一步走1阶或者2阶。除了第一阶梯外,要走到第n阶有两种方式。第一种,从n-1阶走上来;第二种从n-2阶走上来。第3阶就是第一阶加第二阶,以此递推,第n阶就是第n-1阶加n-2阶。
头像 牛客题解官
发表于 2020-06-05 16:18:21
题解 难度:中等 知识点:大数问题、斐波那契数列 题目剖析:本题很容易理解主要考察了斐波那契数列的知识点。因为只能跳1阶或者2阶,定义n阶有种跳法为f(n),所以f(n)=f(n-1)+f(n-2);如果只是考虑到这点,在计算时会忽略大数的问题,使用int定义则会超出数据范围,所以用字符串解决大数问 展开全文
头像 latesir
发表于 2021-04-22 22:35:01
n = int(input()) # 动规解法 if n < 3: print(n) else: dp = [0] * (n+1) dp[1], dp[2] = 1, 2 for i in range(3, n + 1): dp[i] = 展开全文
头像 敲键盘coc
发表于 2022-12-13 15:31:37
动态规划,n==1 return 1,n ==2,return 2n >=3, return dp[n] = dp[n-1] + dp(n-2)
头像 温稚
发表于 2023-10-22 15:26:59
本题用动态规划求解,题解写的时间上,看的人少,请多多点赞支持 本题是斐波那契数列的一个变种,主要考察的是大数加减法 java中可以使用BigInteger类实现大数加减 c++我是参考 ‘广州市民林先生’的题解,将斐波那契中的两个数转为字符串,然后一位位加,具体实现看代码,注释很详细 python3 展开全文
头像 哒哒哒,冲呀
发表于 2021-07-27 21:39:30
简洁易懂C++版因为会溢出,所以定义一个vector数组,当快溢出时新建一个数,即大于10的10次方,表示乘上10的10次方的数据,其代码如下,非常简洁!!! #include<iostream> #include<vector> using namespace std; 展开全文
头像 langyuziyou
发表于 2023-03-21 15:09:28
import java.util.Scanner; import java.math.BigInteger; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public 展开全文
头像 HAHAHAHAHA!!!
发表于 2021-09-02 10:38:34
这道题。。。就考个大小越界,int不行、long也不行。。。我去 public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { 展开全文
头像 NeserCode
发表于 2023-07-24 18:58:01
大数字问题使用 JavaScript 的 BigInt 类型解决。 const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterat 展开全文
头像 。不解
发表于 2019-09-11 00:55:36
MTALAB 即使用uint64类型也会超出计算范围,因此需要另外写的uint128加法器,或者实现一个不限数据位数的加法器,等我拿了offer闲下来就回来还愿