高精度:数楼梯
Posted zhenglijie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度:数楼梯相关的知识,希望对你有一定的参考价值。
题目描述
楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
输入格式
一个数字,楼梯数。
输出格式
走的方式几种。
输入输出样例
输入 #1
4
输出 #1
5
说明/提示
60% N<=50
100% N<=5000)
思路:一开始自己写得了40分,没想到还有高精度部分,看了一下题解,用一个二维数组来保存,如果当前大于10就进位,最后倒序输出。
1 #include<iostream> 2 #include<algorithm> 3 4 using namespace std; 5 6 int n, len = 1, f[5003][5003]; //f[k][i]对应第k阶台阶对应的走法数 7 void hp(int k) 8 { 9 int i; 10 11 for (i = 1; i <= len; i++) 12 { 13 f[k][i] = f[k - 1][i] + f[k - 2][i]; 14 } 15 16 for (i = 1; i <= len; i++) 17 { 18 if (f[k][i] >= 10) 19 { 20 f[k][i + 1] += f[k][i] / 10; 21 f[k][i] = f[k][i] % 10; 22 if (f[k][len + 1]) 23 { 24 len++; 25 } 26 } 27 } 28 } 29 30 int main() 31 { 32 int i; 33 34 cin >> n; 35 36 f[1][1] = 1; 37 f[2][1] = 2; 38 for (i = 3; i <= n; i++) //从第三阶开始 39 { 40 hp(i); 41 } 42 for (i = len; i >= 1; i--) 43 { 44 cout << f[n][i]; 45 } 46 return 0; 47 }
以上是关于高精度:数楼梯的主要内容,如果未能解决你的问题,请参考以下文章