老鼠繁殖问题

问题:
                 一对耗子每个月生一对小耗子,小耗子成长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); 

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值