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 }