我的代码
#include<stdio.h>
#define N 44
int main()
{
int t,i,a,k;
scanf("%d",&t);
int b[N];
b[0]=0;
b[1]=1;
b[2]=1;
for(k=3;k<=N;k++)
{
b[k]=b[k-1]+b[k-2];
}
for(i=0;i<t;i++)
{
scanf("%d",&a);
printf("%d\n",b[a]);
}
return 0;
}
错误原因
Output Limit Exceed
AC
#include<stdio.h>
int main(){
int T,a[50]={0,1,1};
for(int i=3;i<=45;i++){
a[i]=a[i-1]+a[i-2];
}
scanf("%d",&T);
for(int i=0;i<T;i++){
int n;
scanf("%d",&n);
printf("%d\n",a[n]);
}
return 0;
}
反思
改成:
#include<stdio.h>
int main()
{
int t,i,k;
int b[45]={0,1,1};
for(k=3;k<=45;k++)
{
b[k]=b[k-1]+b[k-2];
}
scanf("%d",&t);
for(i=0;i<t;i++)
{ int a;
scanf("%d",&a);
printf("%d\n",b[a]);
}
return 0;
}
又AC了。
改成
#include<stdio.h>
#define N 50
int main()
{
int t,i,a,k;
int b[N]={0,1,1};
for(k=3;k<=N;k++)
{
b[k]=b[k-1]+b[k-2];
}
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&a);
printf("%d\n",b[a]);
}
return 0;
}
也AC了。
最后发现是N小了,N>=45时,就可以AC。