有一对耗子 他每月要生一对小耗子,小耗子长到第四个月后,每月(从第四个月)也开始每月生一对小耗子,请问,100年后 一共有多少只耗子.
PS:不考虑公母与死亡问题
PS:不考虑公母与死亡问题
解决方案 »
- 求教怎么用swing组件按页显示word或pdf书籍?
- 关于JRadioButton中fireActionPerformed里面的执行顺序的问题
- 今天面试碰到的问题
- 帮我看看数组索引问题
- java开发Applet的问题?
- jni异常问题
- 一个关于Java国际化的问题,请高手指教!!!
- myeclipse如何配置tomcat服务器
- 如何使用java,调用Visual Basic的ActiveX Dll???(100)
- :请问:高手请进来:在midp中如何访问手机的内部文件呀“例如:通讯录”,最好有例子呀!!!!一片绿叶在吗??????!!!!!!
- 我想学java,不知用什么开发工具好,请大师门给指个路!
- 怎么把字符串中的"\r\n"过滤掉?
楼主【kyoko609】截止到2008-07-14 21:15:41的历史汇总数据(不包括此帖):
发帖的总数量:4 发帖的总分数:40 每贴平均分数:10
回帖的总数量:3 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:3 结贴的总分数:20
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:20
结贴的百分比:75.00 % 结分的百分比:50.00 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
楼主加油
int n=4; //n月后开始产子
int s[] = new int[n+1]; //出生i个月的耗子数量有s[i]对
s[x] = 1;
for(int month=0; month<=100*12; ++month){
int new_s = s[x];
s[x] += s[x-1];
for(int i=x-1; i>0; --i)
s[i] = s[i-1];
s[0] = new_s;
}
S1=S2=S3=1
Sn=S(n-1)+S(n-3)简单递归公式 ,变种的斐波那契数列,程序就简单了。
按楼主描述就是类fibonacci数列f(n)=f(n-2)+f(n-1) (n>2,n∈Z)
f(1)=1,f(2)=2
解: 前面四个月 因为只有一对老鼠生育
所以S1=1;s2=2;s3=3;
第四个月原来的老鼠和第一胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以s4=2*2+2;
第五个月原来的老鼠和第一,二胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S5=3*2+2;
第六个月原来的老鼠和第一,二,三胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S6=4*2+2;
.
.
.
以此类推:
得到第N个月后的老鼠为:Sn=(n-2)*2+2;
如果是每四个月开始生小老鼠的话,就是以下算法:
所以S1=1;s2=2;s3=3;s4=4
第五个月原来的老鼠和第一胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S5=2*2+3;
第六个月原来的老鼠和第一,二胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S6=3*2+3;
.
.
.
以此类推:
得到第N个月后的老鼠为:Sn=(n-3)*2+3;
如果是每三个月开始生小老鼠 算法如下:
解: 前面三个月 因为只有一对老鼠生育
所以S1=1;s2=2;s3=3;
第四个月原来的老鼠和第一胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以s4=2*2+2;
第五个月原来的老鼠和第一,二胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S5=3*2+2;
第六个月原来的老鼠和第一,二,三胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S6=4*2+2;
.
.
.
以此类推:
得到第N个月后的老鼠为:Sn=(n-2)*2+2;
如果是每四个月开始生小老鼠的话,就是以下算法:
所以S1=1;s2=2;s3=3;s4=4
第五个月原来的老鼠和第一胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S5=2*2+3;
第六个月原来的老鼠和第一,二胎小老鼠开始生小老鼠而且还有2对小老鼠没有开始生所以S6=3*2+3;
.
.
.
以此类推:
得到第N个月后的老鼠为:Sn=(n-3)*2+3;
若n月的老鼠一个月后都能生育,则n+1月的老鼠数量:S(n+1) = 2*S(n);
但实际上到n+1月仍不足三个月的老鼠(也是就n-1月,和n月内出生的老鼠)是不能生育的,
不能生育的老鼠有:[S(n)-S(n-1)]+[S(n-1)-S(n-2)]=S(n)-S(n-2);
那么实际上n+1月的老鼠数量:S(n+1)=2S(n)-[S(n)-S(n-2)]=S(n)+S(n-2)