首页 > 试题广场 >

爬楼梯

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

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


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

输入

5

输出

8
n=int(input())
a,b = 1,1
for _ in range(n):
    a,b=b,a+b
print(a)    

发表于 2021-03-31 20:33:51 回复(0)
import sys
def diffroad(n):
    res =[1,2]
    if n<3:
        return res[n-1]
    for i in range(3,n+1):
        res[(i-1)%2] += res[i%2]
    return res[(i-1)%2]
    
if __name__=="__main__":
    n = int(sys.stdin.readline().strip())
    print(diffroad(n))

发表于 2019-09-07 22:41:08 回复(0)
def func(n):
    if n <= 1:
        return 1
    a = 1
    b = 1
    j = 2
    while j <= n:
        temp = a + b
        a = b
        b = temp
        j += 1
    return b


input_num = int(input())
print(func(input_num))

发表于 2019-09-06 11:18:46 回复(0)
""""
台阶问题,考虑动态规划
设dp[n]为n阶台阶的方法数,
每次只能上1、2阶台阶,要想到达n,则只能由n-1,n-2到达
dp[n] = dp[n-1] + dp[n-2]
边界 dp[0] = dp[1] = 1
"""

if __name__ == "__main__":
    n = int(input().strip())
    dp = [1] * (n + 1)
    for i in range(2, n + 1):
        dp[i] = dp[i - 1] + dp[i - 2]
    print(dp[n])

发表于 2019-07-13 14:54:55 回复(1)