题目:有一头母牛,从出生的第4年起,在每年年初生一头小母牛,每头小母牛从第4年起,每年年初也生一头小母牛。问从第一头母牛生第一头小母牛算起,到第20年时,牛的头数共有多少(假定每头母牛都恰好存活15年)。
分析:这是一个典型的类Fibonacci数列问题,在解决问题时注意增加的母牛数量和是否有母牛死亡就可以了。
InBlock.gif#include <iostream>
InBlock.gif using namespace std;
InBlock.gif void main( void)
InBlock.gif{
InBlock.gif     int cow=1, year=1,addCow=0,dieCow[15],countCow[21]={0,2,3,4};
InBlock.gif     for( int i=0;i<15;i++) //初始化每年死的母牛;
InBlock.gif  dieCow[i]=0;
InBlock.gif     for( int j=4;j<=20;j++) //初始化第几年的母牛总数;
InBlock.gif  countCow[i]=0;
InBlock.gif     for(year=4;year<=20;year++)
InBlock.gif    {
InBlock.gif   if(year<16)
InBlock.gif      countCow[year]=countCow[year-3]+countCow[year-1];
InBlock.gif   else
InBlock.gif      countCow[year]=countCow[year-3]+countCow[year-1]-countCow[year-15];
InBlock.gif    }
InBlock.gif     for( int k=1;k<=20;k++)
InBlock.gif    {
InBlock.gif   if(k<16)
InBlock.gif      cout<< "第"<<k<< "年死去的母牛数为:"<<dieCow[k]<< ";";
InBlock.gif   else
InBlock.gif      cout<< "第"<<k<< "年死去的母牛数为:"<<countCow[k-15]<< ";";
InBlock.gif  cout<< "第"<<k<< "年的母牛总数为:"<<countCow[k]<<endl;
InBlock.gif    }
InBlock.gif}