解题思路:
从第一层阶梯开始,我们试着列一下不同走法:
2层: 1,1; 2; 共2种;
3层: 1,1,1; 1,2; 2,1; 共3种;
4层: 1,1,1,1; 1,1,2; 1,2,1; 2,1,1; 2,2; 共5种;
5层: 1,1,1,1,1; 1,1,1,2; 1,1,2,1; 1,2,1,1 2,1,1,1; 2,1,2; 2,2,1; 1,2,2; 共8种;
从中我们可以发现规律,其实题目的意思就是斐波那数列,即从第三项开始,每一项等于前两项的和,刚开始我试了用递归算法,但是无奈内存超限,然后用了数组的做法,先计算出斐波那数列前40项并存入数组里,然后再按需输出。看懂了希望能给个赞,有想法可以在评论区留言。
注意事项:
是从第一层阶梯开始走的,所以套进数组M要减1,并且当M为1时要输出1!!!(我因为这里错了好久)
参考代码:
#include<stdio.h> int main() { int N,M,i; long long k[40]={1,1,2}; scanf("%d",&N); for(i=3;i<40;i++) { k[i]=k[i-1]+k[i-2]; } while(N--) { scanf("%d",&M); if(M>40||M<1) printf("0\n"); else printf("%lld\n",k[M-1]); } return 0; }
0.0分
6 人评分
抱歉。内存没超限
1810819053 2019-04-26 18:17:17 |
可能是我算法有问题了
望尽天涯路 2019-04-29 18:16:29 |
哈哈哈,居然辣么久才回我,肯定是这几天没刷题
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:941 |
【简单计算】 (C语言代码)浏览:642 |
剪刀石头布 (C语言代码)浏览:1792 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:628 |
K-进制数 (C语言描述,蓝桥杯)浏览:955 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:582 |
【偶数求和】 (C语言代码)浏览:460 |
蚂蚁感冒 (C语言代码)浏览:816 |
程序员的表白 (C语言代码)浏览:678 |
一元一次方程 (C语言代码)浏览:4245 |