数楼梯

要想知道到达哪一个楼梯有多少种,需要知道到达前两个楼梯分别需要的方法数,因为可以走一阶或者两阶,所以到达该层楼梯的前一步可以走一阶也可以走两阶,因此需要知道前两个阶数的方法,所以这就是一个斐波那契数列,但是所给楼梯数较大,所以需要用到高精度加,设立一个二维数组,记录每一阶的方法数
代码如下:
#include<stdio.h> int gogo[10000][10000]; int len = 1; void jia(int m) { for (int i = 1; i <= len; i++) { gogo[m][i] = gogo[m - 1][i] + gogo[m - 2][i]; } for (int i = 1; i <= len; i++) { if (gogo[m][i] > 9) { gogo[m][i + 1] += gogo[m][i] / 10; gogo[m][i] %= 10; if (i == len) len++; } } for (int i = len; gogo[m][i] == 0; i--) { len--; } return; } int main(void) { int n; scanf("%d", &n); gogo[1][1] = 1; gogo[2][1] = 2; for (int i = 3; i <= n; i++) { jia(i); } for (int i = len; i > 0; i--) { printf("%d", gogo[n][i]); } return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号