一对耗子每个月生一对小耗子,小耗子成长3个月,从第4个月开始也可以每个
月生一对小耗子。假如所有的耗子都不死的情况下,2年(24个月)后一共有多少只耗子?
业务逻辑来看:将老鼠分为 old(出生超过3个月),first(出生一个月),second(出生两个月),third(出生3个月)
代码如下:
#include <stdio.h>
void main()
{
int old = 2,first = 0,second = 0,third = 0;
int i = 0;
for(i = 0; i < 24; i++)
{
old = old + third;
third = second;
second = first;
first = old;
}
printf("%d\n",old+first+second+third);
}
n年后数量组成来看:2年后的总老鼠=最初两只老鼠+这两只老鼠2年共生了多少+每年新生的老鼠在之后2年生的
代码如下:
#include <stdio.h>
#define MONTH 24
void main()
{
int i,sum=0,mouse[MONTH]={1,1,1,1}; //mouse[i]表示i月有多少对新生老鼠
for(i=1;i<=MONTH-3;i++) //每个月的新生老鼠以后共会生多少对
{
if(i>=4)
{
mouse[i]=mouse[i-1]+mouse[i-3];
}
sum+=mouse[i]*(MONTH-i-2);
printf("%6d月新生%6d对,在原计划两年内它们每对还会生%6d对。\n",i,mouse[i],MONTH-i-2);
}
sum=sum+mouse[0]+MONTH; //加上最初两只老鼠和这两只老鼠一共生的老鼠
printf("\n\t\t%d月后有%6d只老鼠。\n",MONTH,sum*2);
}