NYOJ 352 数乌龟

地址:

思路:其实这个题联系的应该是对递归的理解,但是如果提交递归,会超时,所以应用公式递推的方法

递归方法:会TimeLimitExceeded

 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 int f(int n)

 4 {

 5     if(n>=1&&n<=4)  return n;

 6     else 

 7     return f(n-1)+f(n-3);

 8 }

 9 int main()

10 {

11     int n;

12     while(~scanf("%d",&n),n)

13     {

14         printf("%d\n",f(n));

15     }

16     return 0;

17 }

公式推导方法:

 1 #include<stdio.h>

 2 int main()

 3 {

 4     int n,i;

 5     int a[60];

 6     while(scanf("%d",&n),n)

 7     {

 8         a[1]=1;a[2]=2;a[3]=3;a[4]=4;

 9         for(i=5;i<=n;i++)

10         a[i]=a[i-1]+a[i-3];

11         printf("%d\n",a[n]);

12     }

13     return 0;

14 }

你可能感兴趣的:(OJ)