`

ACM 2041 超级楼梯

    博客分类:
  • ACM
 
阅读更多

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;
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics