Problem

Figure 4. A figure illustrating the propagation of Fibonacci's rabbits if they die after three months.

Recall the definition of the Fibonacci numbers from “Rabbits and Recurrence Relations”, which followed the recurrence relation Fn=Fn−1+Fn−2Fn=Fn−1+Fn−2 and assumed that each pair of rabbits reaches maturity in one month and produces a single pair of offspring (one male, one female) each subsequent month.

Our aim is to somehow modify this recurrence relation to achieve a dynamic programming solution in the case that all rabbits die out after a fixed number of months. See Figure 4 for a depiction of a rabbit tree in which rabbits live for three months (meaning that they reproduce only twice before dying).

Given: Positive integers n≤100n≤100 and m≤20m≤20.

Return: The total number of pairs of rabbits that will remain after the nn-th month if all rabbits live for mm months.

Sample Dataset

6 3

Sample Output

4
# coding=utf-8
### 11. Mortal Fibonacci Rabbits #### 0   1   1   2   2   3   4   5   7   9   12# method1
def fibonacciRabbits(n, m):F = [0, 1, 1]for i in range(3, n + 1):if i <= m:total = F[i - 1] + F[i - 2]elif i == m + 1:total = F[i - 1] + F[i - 2] - 1else:total = F[i - 1] + F[i - 2] - F[i - m - 1]F.append(total)return (F[n])# print fibonacciRabbits(6,3)# method2
def f(n, k):s = [0] * (k + 1)  # list *4 [0, 0, 0, 0]   s[0]代表当月出生的兔子,s[k]代表当月死亡的兔子s[0] = 1           # [1, 0, 0, 0]for x in range(1, n):s[1:k + 1] = s[0:k]print ss[0] = sum(s[2:])return sum(s[:-1])print f(10, 3)

  

转载于:https://www.cnblogs.com/think-and-do/p/7274013.html

11 Mortal Fibonacci Rabbits相关推荐

  1. C++11之常量表达式(const与constexpr的区别)

    系列文章 C++11之正则表达式(regex_match.regex_search.regex_replace) C++11之线程库(Thread.Mutex.atomic.lock_guard.同步 ...

  2. 《Python核心编程》第11章 函数和函数式编程 练习

    11-3 函数. 在这个练习中,我们将实现max()和min()内建函数. (a) 写分别带两个元素返回一个较大和较小元素,简单的max2()核min2()函数.他们应该可以用任意的python 对象 ...

  3. 【Python】functools.wraps定义函数装饰器

    第一次见到functools.wraps是在 Flask Web开发 中,一直不明白怎么回事. 装饰器(decorator)是干嘛的?对于受到封装的原函数来说,装饰器能够在那个函数执行前或者执行后分别 ...

  4. Apple Swift编程语言入门教程

    2019独角兽企业重金招聘Python工程师标准>>> 1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programmi ...

  5. 《C与指针》第七章练习

    本章问题 1.具有空函数体的函数可以作为存根使用,你如何对这类函数进行修改,使其更有用? answer:Have the stub(存根) print out a message when it is ...

  6. 初探swift语言的学习笔记一(基本数据类型)

    作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/28258805 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...

  7. Apple Swift 编程语言入门教程

    2019独角兽企业重金招聘Python工程师标准>>> 1   简介 今天凌晨Apple刚刚发布了Swift编程语言,本文从其发布的书籍<The Swift Programmi ...

  8. 是否使用wraps的區別

    第一次见到functools.wraps是在 Flask Web开发 中,一直不明白怎么回事. 装饰器(decorator)是干嘛的?对于受到封装的原函数来说,装饰器能够在那个函数执行前或者执行后分别 ...

  9. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  10. java jsr_分叉并加入Java 7 – JSR 166并发实用程序

    java jsr Java 7最有趣的改进之一是对并发的更好支持. 借助JSR 166并发实用程序,我们获得了一些非常有用的并发改进. 在我看来,fork-join库在软件工程中具有很高的实际应用潜力 ...

最新文章

  1. 详细说说Transformer (超详细图解,一图胜千言)
  2. 整个宇宙可能是个巨大的神经网络?看科学家们是这样解释的
  3. 用c语言找出第123个素数,在C语言中查找第N个素数
  4. VMware QueryPerformanceCounter/GetTickCount 悬案
  5. JAndFix: 基于Java实现的Android实时热修复方案
  6. LeetCode 298. 二叉树最长连续序列(自顶向下)
  7. Delta3d组件以及消息机制
  8. db2主键自增和oracle,DB2主键自增长设置(id自增)
  9. 面向项目(九)—— 交叉工具链
  10. sleep期间读取所有_java并发学习第四弹:走进JDK源码去了解sleep和join
  11. redis 一主二从三哨兵
  12. 软件立项申请报告模板
  13. 架构师接龙 飞信孙朝晖VS.139说客李祎
  14. 如何使用SQL判断身份证号码第18位是否符合规则
  15. Word 软回车和硬回车
  16. 配置电脑计算机从哪几个,电脑硬件配置_电脑硬件配置有哪些
  17. 滴水逆向 switch
  18. win10下用VMware workstation pro安装Ubuntu 16.04图解
  19. SpringBoot集成redis的LBS功能
  20. 计算机毕业设计(14)python毕设作品之校园运动场地预约系统

热门文章

  1. 基于JAVA优乐帮育儿系统计算机毕业设计源码+系统+数据库+lw文档+部署
  2. Java实现腾讯企业邮箱收发邮件
  3. HDU1880——哈希表(BKDR算法)——魔咒词典
  4. mysql水仙花数,水仙花数_水仙花数c语言程序
  5. 【CVPR2021】OCR文本检测MOST解读
  6. Deeplearning4j 快速入门
  7. C2AE: Class Conditioned Auto-Encoder for Open-set Recognition(CVPR 2019)部分翻译
  8. ASP.NET4.0尚未在Web服务器上注册
  9. oracle同义词不再有效,ORA-00980: 同义词转换不再有效
  10. 互联网早报:微信内测深度清理功能内存,可一键清理缓存