从第一级到第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)
还没有任何评论哟~
