思考過程:
年份 頭數
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;
}