http://acm.hdu.edu.cn/showproblem.php?pid=2041
分析:
在第N级阶梯,可能是N-1级一步跨到N级或者N-2级跨两布到N,所以
F(N) = F(N-1)+F(N-2);
注意1<=M<=40
所以超出了int的存储范围,可以用long int
用数组存储代替递归实现
代码如下:
#include <stdio.h>
int main()
{
int n,m,i;
long int a[41];
a[0]=1;
a[1]=1;
a[2]=1;
for (i=3; i<41; i++) {
a[i]=a[i-1]+a[i-2];
}
scanf("%d",&n);
while (n--) {
scanf("%d",&m);
printf("%ld\n",a[m]);
}
return 0;
}
2559

被折叠的 条评论
为什么被折叠?



