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 }

posted on 2012-08-16 17:50  mycapple  阅读(258)  评论(0编辑  收藏  举报

导航