(山理工 1243)母牛问题(大牛生小牛,小牛生。。。。)
问题描述
有一对夫妇买了一头母牛,它从第2年起每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0< n< 55),n的含义如题目中描述。 n=0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出在第n年的时候母牛的数量。 每个输出占一行。
Sample
input
2 4 5 0
output
2 4 6
解一解 (=´ω`=)
首先我来画个图生的牛同那个对应的年数来记:
一 1
二 1 2
三 1 2 3
四 1 2 3 4
五 1 2 3 4 5 5
六 1 2 3 4 5 5 6 6 6
。。。。。。(子子孙孙无穷尽也)
好了,我们在图上找找规律
(此处省略。。。。。。)
示例程序(时间$O(2^n)$空间$O(n)$)
1 #include <stdio.h> 2 3 int main() 4 { 5 int n; 6 int bo(int); 7 while(1) 8 { 9 scanf("%d",&n); 10 if (n == 0) 11 break; 12 else 13 printf("%d\n",bo(n)); 14 } 15 return 0; 16 } 17 int bo(int n) 18 { 19 if(n == 1) 20 return (1); 21 if(n == 2) 22 return (2); 23 if(n == 3) 24 return (3); 25 if(n == 4) 26 return (4); 27 if(n >= 5) 28 return (bo(n-1)+bo(n-3)); 29 }
萌新菜鸟讲解就到这