生白鼠问题
二.问题的分析
我们先根据题意直接推算。在第1月至第6月均只有1对白鼠;第7个月,白鼠生下1对小白鼠,共2对;第8个月,白鼠再生下1对小白鼠,共3对;第9个月,白鼠生下2对小白鼠,共5对……依次类推,根据小白鼠的成长、生育及死亡规律,易得出月份和白鼠对数的关系。又因为0
using namespace std;
int f[40];
int m,n,k;
int fun(int kk)
{
if (kk<1)//月份小于,当月诞生白鼠数量为
return 0;
else
if ...
二.问题的分析
我们先根据题意直接推算。在第1月至第6月均只有1对白鼠;第7个月,白鼠生下1对小白鼠,共2对;第8个月,白鼠再生下1对小白鼠,共3对;第9个月,白鼠生下2对小白鼠,共5对……依次类推,根据小白鼠的成长、生育及死亡规律,易得出月份和白鼠对数的关系。又因为0
using namespace std;
int f[40];
int m,n,k;
int fun(int kk)
{
if (kk<1)//月份小于,当月诞生白鼠数量为
return 0;
else
if (kk<7)
if (kk==1)//第一月份诞生小白鼠数量为
return 1;
else//第到月份,诞生小白鼠数量为
return 0;
else//第个月以后诞生小白鼠的数量通过递归调用公式求得
if (m==1)//m=1的递推公式
return fun(kk-6)+fun(kk-7)+2*fun(kk-8);
else//m=2的递推公式
return fun(kk-6)+fun(kk-7)+2*fun(kk-8)+2*fun(kk-9);
}
int sum(int kk)
{
if(kk<1)//月份小于,小白鼠总数为
return 0;
else
if (kk<7)//第到月份,小白鼠总数为
return 1;
else//第月份以后,小白鼠的总数=上月的小白鼠总数+当月诞生的小白鼠数量-至今已诞生n个月应死亡的小白鼠数量,递归调用
if(kk-n<1)//没有白鼠死亡
return sum(kk-1)+f[kk];
else
return sum(kk-1)+f[kk]-f[kk-n];
}
void main()
{
cout<<"please enter n in range (9,13)"<>n;
cout<<"please enter m in range (1,3)"<>m;
cout<<"please enter k in range (0,37)"<>k;
for(int i=1;i
本文档为【生白鼠问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。