标签:思路 描述 clu 方式 name strong stream 输入 sample
楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
一个数字,楼梯数。
走的方式几种。
4
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 }
标签:思路 描述 clu 方式 name strong stream 输入 sample
原文地址:https://www.cnblogs.com/ZhengLijie/p/12719989.html