美文网首页
古典问题算法求解案例

古典问题算法求解案例

作者: 烨枫_邱 | 来源:发表于2018-04-28 18:47 被阅读0次

【程序题】  题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

引用分析图

方法1:使用递归思想,思路如下

/**

* 分析:

* Month1: 1对 = 1

* Month2: 1对 = 1

* Month3: 1对 + 1对(新出生) = 2

* Month4: 1对 + 1对(上月出生) + 1对(这月新生) =3

* Month5: 1对 + 1对(上上月出生) + 1对(上月出生) + 1对(这月新生) + 1对(第一对新出生的兔子新出生一对兔子) = 5

* Month6: 1对 + 1对(上上上月出生) + 1对(上上月出生) + 1对(上月出生) + 1对(这月新生) + 1对(第一对新出生的兔子上月新出生一对兔子) + 1对(第一对新出生的兔子新出生一对兔子) + 1对(第二对新生兔子此月新生第一对兔子) = 8

* 。。。。。。。  1,1,2,3,5,8.。。。 菲波那切数列 即 f(n+2) = f(n) + f(n+1);

*/

递归

方法2:构造函数思想,思路如下

/**

*分析:可以先不用考虑背后究竟是什么数据规律,只要关注其中一点:

*兔子在什么时候出生的,以及什么可以生小兔子了

*所以问题简化为:实际月份- 出生月份 >= 2 就可以生小兔了

/**

因此先构造一个类,取名为兔子;里面只有一个属性,就是出生日期;

定义一个兔子类

紧接着,是具体计算和打印,在这里我们可以使用一个While条件循环,在设定的时间范围内进行计数累加:代码如下:

具体计算,为了方便直接在构造函数里处理了

欢迎大家提供不同的思路,相互切磋学习,一起进步!

相关文章

  • 古典问题算法求解案例

    【程序题】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子...

  • 装箱问题

    贪心算法 装箱问题 问题描述: 求解思路: 代码实现:

  • HMM中的维特比算法

    1. 算法 维特比算法实际上常常被用来求解HMM模型的预测问题。即用动态规划求解概率最大(最优路径)。最后求解出来...

  • 可计算问题笔记

    可计算问题理论笔记 计算机可以求解哪些问题? 求解计算问题的思路 衡量求解计算问题的算法优劣--复杂度分析 复杂度...

  • 算法之美-工程、应用、实战

    算法是对特定问题求解步骤的描述。 对于同一个问题,我们可能会用不同的算法来求解,我们可以根据算法的可读性、效率等进...

  • 排序算法——归并排序

    一、算法思想 1. 算法描述 把一个比较大的问题分割成两个比较小的问题求解 重复步骤1直至问题已可直接求解,如要排...

  • 动态规划算法(01背包问题)

    一. 动态规划算法介绍: 动态规划算法和分治算法类似,也是将待求解问题分成若干个小问题一步步求解,不同的是,每一个...

  • 可判定性

    研究算法在求解问题上的能力。有些问题算法上可解,有些问题算法上不可解。 5.1 可判定语言 算法上可判定的语言。 ...

  • 算法问题求解流程

  • awesome 禁忌搜索

    禁忌搜索(Tabu Search)算法及python实现 实验10 禁忌搜索算法求解tsp问题

网友评论

      本文标题:古典问题算法求解案例

      本文链接:https://www.haomeiwen.com/subject/fbjglftx.html