代码1:AC
#include<stdio.h>
#include<string.h>
#define maxn 1010
int a[maxn]={0,2,3,5};
int main()
{
int t;
int count=0;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int i;
for(i=3;i<=n;i++)
a[i]=a[i-1]+a[i-2];
printf("Scenario #%d:\n",++count);
printf("%d\n\n",a[n]);
}
return 0;
}
代码2:AC
#include<stdio.h>
int dp0[100],dp1[100];
int main()
{
dp0[1]=1;
dp1[1]=1;
int i;
for(i=2;i<=46;i++)
{
dp0[i]=dp0[i-1]+dp1[i-1];//若尾数为0,则前一位可以是0也可以是1,排列数为两者之和
dp1[i]=dp0[i-1];//若尾数为1,则前一位只能是0,排列数为dp0[i-1]
}
int t,n;
scanf("%d",&t);
int count=1;
while(t--)
{
scanf("%d",&n);
printf("Scenario #%d:\n",count++);
printf("%d\n\n",dp0[n]+dp1[n]);
}
return 0;
}