题目:
思路:
首先将所有牛分类
1.a第一头母牛-每年年初生一头小母牛
2.不能生小牛的牛:
b1-一岁小母牛
b2-二岁小母牛
b3-三岁小母牛
超过4岁就会再生一头小牛
因此计算每年生的小牛是第一头生的a再加上4岁后的生的
代码实现:
#include<iostream>
using namespace std;
int main()
{
int a=1,b1=0,b2=0,b3=0,year[55];
//初始化如果第一头每年生一头的牛数量是1
//1岁的小牛
//2岁的小牛
//3岁的小牛都初始化为1
//第0年没有牛也初始化为0
year[0]=0;
year[1]=1;
//定义年数组来存放每一年有的牛数
//进入循环从第2年到第55年
for(int i=2;i<55;i++)
{
a=a+b3;
//每年的新生牛等于原先可以生的+去年3岁的
year[i]=year[i-1]+a;
//去年的+新的
b3=b2;//2岁的变成3岁
b2=b1;//1岁的变成2岁
b1=a;//新出生的
}
while(1)
//一直进行循环
{
int p;//输入年数p
cin>>p;
if(p!=0)//如果不为0
{
cout<<year[p]<<endl;//将year数组中存储的年数打印
}
else//如果为0的话直接结束
break;
}
return 0;
}