0
点赞
收藏
分享

微信扫一扫

nyoj76超级台阶 fibonacci数

mjjackey 2022-08-05 阅读 17


题意规定m=1是为0,m=2时为1,m=3时为2;

这时候我们可以这样想,假如台阶数为k,那么有多少种呢?这时候我们可以想到当为k时比k-1多了一个台阶,k可以等于(这种说法不恰当 ,理解就行 不是等于,下同)k-1的数目,因为最后相当于在k-1的基础上再上一步。

由于可以同时上两步,我们又考虑到了k-2,k比k-2多了2个台阶,k又等于(上同)k-2的数目,因为最后相当于在k-2的基础上再上两步。

所以经过终结m(k)=m(k-1)+m(k-2);

#include <stdio.h>
int main()
{
int t,n,a[45];
a[1]=0,a[2]=1,a[3]=2;
for(int i=4;i<=40;i++)
a[i]=a[i-1]+a[i-2];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",a[n]);
}
return 0;
}




举报

相关推荐

0 条评论