题目:
思路:
首先将所有牛分类
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年没有牛也初始化为0year[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;//输入年数pcin>>p;if(p!=0)//如果不为0{cout<<year[p]<<endl;//将year数组中存储的年数打印} else//如果为0的话直接结束break;
}return 0;
}