首页 > 其他 > 详细

数楼梯题解

时间:2020-03-15 17:34:16      阅读:123      评论:0      收藏:0      [点我收藏+]

题目描述

楼梯有N阶,上楼可以一步上一阶,也可以一步上两阶。那么走到第N阶楼梯共有多少种不同的走法呢?

输入格式:
一个正整数 N(1<=N<=5000),表示楼梯阶数。

输出格式:
输出一个数,表示走到第N阶楼梯有多少种走法。
注意,数据范围很大,即使是64位也可能不够存。

解题思路

1.建立一个二维数组,由低位到高位逆序存储斐波那契数列
2.递归得到斐波那契数列:结合高精度加法,注意进位和位数
3.反向输出斐波那契数列

完整代码

#include<stdio.h>
#include<algorithm>
using namespace std;

int main()
{
    int n, i, j, count = 1, t;
    static char ans[5200][2000];
    scanf("%d", &n);
    ans[1][1] = 1;
    ans[2][1] = 2;
    if (n <= 2) {
        printf("%d", ans[n][0]);
    }
    else {
        for (i = 3; i <= n; i++) {
            t = count;
            for (j = 1; j <= t; j++) {
                ans[i][j] += ans[i - 1][j] + ans[i - 2][j];
                ans[i][j + 1] += ans[i][j] / 10;
                ans[i][j] %= 10;
                if (ans[i][t + 1] > 0) {
                    count++;
                }
            }
        }
        for (i = count; i >= 1; i--) {
            printf("%d", ans[n][i]);
        }
    }
    return 0;
}

数楼梯题解

原文:https://www.cnblogs.com/dump16/p/12498580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!