Advertisement

从第一级到第n级台阶的上楼方法数

阅读量:

假设楼梯共有N阶,每次可选择攀登一阶或两阶。(N<=5000)

编写一个程序,用以计算所有可能的行走方式数量。

输入格式
输入一个数值,代表楼梯的总阶数。

输出格式
输出所有可行的行走方式总数。

输入输出样例
输入
4
输出
5
思路:对于此类问题,我们很容易联想到采用递归的方式遍历所有可能的情况。然而,当数值较大时,可能会发生溢出问题。因此,我们选择使用数组来记录每一阶所需的不同走法总数。通过递推的方式可以得出,当k≥3时,第k阶的走法总数等于第k-1阶与第k-2阶走法总数之和。
注意:当N超过500时,所得到的结果将非常庞大,无法通过常规的数据类型进行存储。因此需要模拟高精度数的加法运算(Java和Python语言自带库可避免此问题)。在此过程中,我们使用一个二维数组a来进行数据存储。

复制代码
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    #include <algorithm>
    #include <stdlib.h>
    int N;
    int a[5010][5010]; //第一个存储阶数  第二个存储数字位 
    int len=1; //表示最大位数 
    void add(int k) //模拟

全部评论 (0)

还没有任何评论哟~