这道题第一次交的时候没有申清题意做错了,新出生的小母牛过了三年也就是第四年初从这以后每年年初都能生一头小母牛。
分析:要先搞明白一头小母牛出生那年算起过几年?可以具有生育能力(根据题意三年)例:第二年出生的牛会再第五年生出一头牛从此之后每年年初生出一头牛
题的理解:从第一年到第四年只有原来那个母牛有生育能力,所以从第二年到第四年每年出生一头小母牛,到第五年该出生两个头 小母牛,因为第二年出生的那头小母牛具有了生育能力,它到第五年会生出一头小母牛,第五年就会出生两头牛,也就 是到了第五年有两头可以生育的牛(第二年母牛的数量)。再解释第六年,会出生三头小母牛,是因为第三年那头小母 牛具有了生育能力,所以到了第六年有三头可以生育的母牛(第三年母牛的数量)。
总结: 第 i 年母牛的数量如何求? 就是第 i-1 年母牛的数量+第 i 年出生牛的数量(第i年出生牛的数量等于啥?(就是第 i 年具 有生育能力的牛的数量?(就是第 i-3 年母牛的数量 )))
从第四年起,往后每年母牛的数量=前一年母牛的数量+前三年母牛的数量 :a[i]=a[i-1]+a[i-3]
#include<iostream>
using namespace std;
int a[60]={0,1,2,3,4};//下标表示年份,元素的值表示这年母牛的数量。
int num(int x)
{
if(x<=4) return x;
else
{
for(int i=5;i<=x;i++) a[i]=a[i-1]+a[i-3];
return a[x];
}
}
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
cout<<num(n)<<endl;
}
return 0;
}
0.0分
3 人评分