您的位置:首页 > 其它

杭电OJ2018

2016-10-23 15:18 323 查看
#include <iostream>
using namespace std;
int main(){//有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛
int n;
int m , c[4];//m代表可以生小母牛的母牛,c[1]代表刚生出的小牛,c[2]代表经过一年的小牛,以此类推,分开讨论
int temp;
while(cin >> n){//第n年的时候只算了前面n-1年的情况
if(n == 0){
break;
}
else{
m = 1;
c[1] = c[2] = c[3]= 0;
for(int i = 1 ; i <= n - 1 ; i ++){
/*if(i < 4){  只是这种情况不能判断出,新生出来的小母牛也会再等4年,最好的方法就是将不可以生产的小母牛也分为年龄为几年的
c++;
}*/
m = m + c[3];//上一年三岁的小牛在该年已经4岁了,可以生小牛了!!! 所以有下面的c[1]=m
c[3] = c[2];
c[2] = c[1];
c[1] =m;//所以c[1]=m
}
cout << m + c[1] + c[2] + c[3] << endl;
}
}
}
/*本题关键就是分开讨论,最开始只想到分为四年以上的母牛,但发现心生出来的小母牛也会再等4年
*所以用了数组将四岁以下的小木年统计一下
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: