首页 > 试题广场 >

N阶楼梯上楼问题

[编程题]N阶楼梯上楼问题
  • 热度指数:21804 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归)

输入描述:
输入包括一个整数N,(1<=N<90)。


输出描述:
可能有多组测试数据,对于每组数据,
输出当楼梯阶数是N时的上楼方式个数。
示例1

输入

4

输出

5
利用斐波那契数列思路进行求解
def fun(n):
    n1 = 1
    n2 = 2
    if n == 1:
        return 1
    elif n == 2:
        return 2
    count = 0
    for i in range(3,n+1):
        count = n1+n2
        n1 = n2
        n2 = count
    return count
if __name__ == '__main__':
    a = int(input())
    print(fun(a))



发表于 2020-12-10 23:02:00 回复(0)
while True:
    try:
        n=int(input().strip())
        dp=[0]*n
        if n==1 or n==2:
            print(n)
        else:
            dp[0]=1
            dp[1]=2
            for i in range(2,n):
                dp[i]=dp[i-1]+dp[i-2]
            print(dp[-1])
    except:
        break
发表于 2019-08-19 09:17:00 回复(0)
from functools import reduce
try:
    while 1:
        print(reduce(lambda a, x: a + [a[-1]+a[-2]], range(95), [1, 2])[int(input()) - 1])
except:
    pass

发表于 2017-10-16 20:34:25 回复(0)

python solution:

while True:
    try:
        a,arr=int(input()),[1,2]
        while len(arr)<a:
            arr.append(arr[-1]+arr[-2])
        print(arr[a-1])

    except:
        break
发表于 2017-10-01 16:58:27 回复(0)