解题思路:

从第一层阶梯开始,我们试着列一下不同走法:

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;
}


点赞(2)
 

0.0分

4 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 4 条评论

奶牛的蛀牙 5年前 回复TA
那只有一级楼梯的时候,他就站在上面,不是没得跳吗
望尽天涯路 5年前 回复TA
@望尽天涯路 哈哈哈,居然辣么久才回我,肯定是这几天没刷题
1810819053 5年前 回复TA
@望尽天涯路 可能是我算法有问题了
望尽天涯路 5年前 回复TA
抱歉。内存没超限