一道acm题 Children’s Queue 急!!
递推公式是:
f(n)=f(n-1)+f(n-2)+f(n-4)
要求算出n<=1000的结果
程序:#include<stdio.h>
int main()
{
int a[1000][500],i,n,j,t=0,s=0;
for(i=0;i<1000;i++)
for(j=0;j<500;j++)
a[i][j]=0;
a[0][0]=1;
a[1][0]=2;
a[2][0]=4;
a[3][0]=7;
for(i=4;i<1000;i++)
for(j=0;j<500;j++)
{
t=a[i-1][j]+a[i-2][j]+a[i-4][j]+s;
s=t/10;
a[i][j]=t%10;
}
while(scanf("%d",&n)!=EOF)
for(j=499;j>=0;j--)
{
if(a[n-1][j]!=0)
{
for(i=j;i>=0;i--)
printf("%d",a[n-1][i]);
printf("\n");
break;
}
}
}
提交结果是时间超过限制,
哪位大虾有好一点的办法啊