题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2041
题目要求:
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
image.png
做题思路:
刚开始没有做草稿,坐在那看着电脑空想,怎么也想不到思路,后来动手列了几个情况才找到规律。
按照楼梯一级一级找规律,
f(1) = 0
f(2) = 1
f(3) = 2
f(4) = 3
f(5) = 5
很快可以看到规律,就是从第三阶楼梯之后,
都有f(n) = f(n-1)+f(n-2),斐波那契数列;
通过递推法就可以求到后面的数了
代码:
#include "stdio.h"
int a(int m) {
if(m == 2 || m == 3)
return m-1;
else
return a(m-1)+a(m-2);
}
int main() {
int n,m,count=0;
scanf("%d",&n);
while (n-- > 0) {
scanf("%d",&m);
printf("%d\n",a(m));
}
}