描述:
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入:
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
输出:对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
input:
2
4
5
0
output:
2
4
6
分析:本题难点在每头小牛在第四年也生产一头小牛,我们可以列出1到8年的增长规律来得出递推式sum[n]=sum[n-1]+sum[n-3](n>=5),我们可以这样来理解这个递推式,从第5年开始,第二年的产的小牛也开始生产,也就是说第二年所有的牛在第5年都会生产,第四年存在的牛第五年也都在,但不是所有都会生产,所以sum[5]=sum[4]+sum[3]。
这样可以得出第n年的牛总数等于n-1年总数加上四年前即n-3年牛的总数。
1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 static int a[55]; 7 a[1] = 1;a[2] = 2;a[3] = 3;a[4] = 4; 8 for (int i = 5;i < 55;i++) 9 a[i] = a[i - 1] + a[i - 3]; 10 int s; 11 while ((cin >> s) && (s != 0)) 12 cout << a[s] << endl; 13 system("pause"); 14 return 0; 15 }
时间: 2024-10-13 23:52:53