经典的兔子问题
来源:互联网 发布:网站制作软件 编辑:程序博客网 时间:2024/04/27 22:43
这道题是:有一对兔子,长到第三个月开始,每个月生一对小兔子,等到小兔子长到第三个月时,又开始每个月生一对小兔子,假设兔子一直不死,那么每个月兔子的数量是多少?
刚拿到题,感觉很简单。可是仔细一想,就发现,还是很麻烦的。因为小兔子到第三个月才会再生小兔子,而小兔子生小小兔子的时候,老兔子也会再生小兔子,那么他的增量不是固定的,而是呈一种非连续递增状态,每两个月变一次,想用一个式子表示出来是有相当难度的。好了,够扯淡得了。
下面看我的解决方法,既然每个月兔子的年龄不是相同的,有一个月大的(用mon1表示数量),两个月大的(mon2),和三个月及三个月以上的(mon3),那么就可以把每个月的兔子分为这三类,然后计算每类兔子的数量,最后相加就是它的总量。
各类兔子的关系是这样的,先从mon3的看,mon3(本月)=mon2(上个月)+mon3(上个月),接着,mon2(本月)=mon1(上个月),然后,mon1=mon3(上个月)。
解释一下,本月三个月大的兔子数就是上个月三个月和两个月大的兔子数之和,因为小兔子长大了;同理本月两个月大的是上月一个月大的长大的,而本月一个月大的是本月三个月大的兔子新生的。最后这几类数量相加就是每个月的总数。
问题到此结束。
附:我的代码如下:
<span style="font-size:18px;">int robert(int n){int inum=0,j=0;int mon1=0,mon2=0,mon3=1;if(n<3)inum=1;//总数if(n>=3){for(j=3;j<=n;++j){mon3=mon3+mon2;mon2=mon1;mon1=mon3;}inum=mon3+mon2+mon1;}return inum;}</span>这个结果和菲波那楔数的结果是相同的。
0 0
- 经典的兔子问题
- 经典兔子问题
- 经典兔子问题
- Java经典兔子问题
- 兔子生兔子的问题
- 经典问题--求兔子数量
- 【经典算法】:兔子繁殖问题
- java经典问题生兔子
- 经典狐狸逮兔子问题
- 递归的经典问题 汉诺塔 阶乘 兔子繁殖
- 兔子的总数问题
- java经典问题——兔子
- C++经典问题:狐狸找兔子
- 黑马程序员—经典题目:兔子问题
- 【经典算法】:狐狸抓兔子问题
- java经典问题——生兔子
- 兔子问题 素数 水仙花数 三个经典C程序的解答 C知识回顾第一天
- 太经典了,兔子的智慧
- 十大编程算法助程序员走上高手之路
- OpenERP国际化
- Matlab读取和保存TXT文件数据
- 独立看门狗
- mac 解决MySQL中文乱码的问题
- 经典的兔子问题
- SQL 21日自学通(v1.0)笔记5(数据库安全)
- POJ 3683 Priest John's Busiest Day
- linux服务器状态、性能相关命令
- 关于android4.4外置sd卡读写
- 查看Hadoop参数
- 【面试准备】letcode-Single Number
- HDU-#1062、1064、1170、1197、1720、2104、2629、2734 HDU水题系列(英文题)(四)
- LUA中的Table.getn()函数的用法