#include<stdio.h>
int main()
{
int z[1007],n;
while(scanf("%d",&n)!=EOF)
{
int m,i,j;
for(j=0;j<n;j++)
{
scanf("%d",&m);
z[1]=0;z[2]=1;z[3]=2;
if(m>=4)
{
for(i=4;i<=m;i++)
z[i]=z[i-1]+z[i-2];
}
printf("%d\n",z[m]);
}
}
return 0;
}
开始想用钱币兑换的思路解,后来才知道,这个存在顺序,换钱的不需要注意顺序!
最后 1 阶可以是从 2 跨过,或从 1 跨过!f(n)=f(n-1)+f(n-2)