nyoj76超级台阶 fibonacci数

来源:互联网 发布:阿里云授权服务中心 编辑:程序博客网 时间:2024/04/23 22: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;}        



1 0
原创粉丝点击