思考过程:
年份 头数
1 1(初始成年母牛)
2 2(成年母牛1头,未成年母牛1头)
3 3(成年母牛1头,未成年母牛2头)
4 4(成年母牛1头,未成年母牛3头)
5 6(成年母牛2头,未成年母牛4头)
6 9(成年母牛3头,未成年母牛6头)
7 13(成年母牛4头,未成年母牛9头)
8 21(成年母牛6头,未成年母牛13头)
9 28(成年母牛9头,未成年母牛19头)
由此可知,从第五年起,某年成年的母牛数=3年前成年母牛数+3年前未成年母牛数
某年未成年母牛数=当年成年母牛数+[去年未成年母牛数-(当年母牛数-去年)]
附AC代码:
#include<iostream>
using namespace std;
int main()
{
int n,adult[60],minority[60];
adult[0]=adult[1]=adult[2]=adult[3]=1;
minority[0]=0,minority[1]=1,minority[2]=2,minority[3]=3;
for(int i=4;i<=55;i++)
{
adult[i]=adult[i-3]+minority[i-3];
minority[i]=adult[i]+minority[i-1]-(adult[i]-adult[i-1]);
}
while(cin>>n)
{
if(n!=0)
{
cout<<(minority[n-1]+adult[n-1])<<endl;
}
else
{
break;
}
}
return 0;
}