zoukankan      html  css  js  c++  java
  • 4.Rabbits and Recurrence Relations

    Problem

    A sequence is an ordered collection of objects (usually numbers), which are allowed to repeat. Sequences can be finite or infinite. Two examples are the finite sequence (π,2–√,0,π)(π,−2,0,π) and the infinite sequence of odd numbers (1,3,5,7,9,)(1,3,5,7,9,…). We use the notation anan to represent the nn-th term of a sequence.

    A recurrence relation is a way of defining the terms of a sequence with respect to the values of previous terms. In the case of Fibonacci's rabbits from the introduction, any given month will contain the rabbits that were alive the previous month, plus any new offspring. A key observation is that the number of offspring in any month is equal to the number of rabbits that were alive two months prior. As a result, if FnFn represents the number of rabbit pairs alive after the nn-th month, then we obtain the Fibonacci sequence having terms FnFn that are defined by the recurrence relation Fn=Fn1+Fn2Fn=Fn−1+Fn−2 (with F1=F2=1F1=F2=1 to initiate the sequence). Although the sequence bears Fibonacci's name, it was known to Indian mathematicians over two millennia ago.

    When finding the nn-th term of a sequence defined by a recurrence relation, we can simply use the recurrence relation to generate terms for progressively larger values of nn. This problem introduces us to the computational technique of dynamic programming, which successively builds up solutions by using the answers to smaller cases.

    Given: Positive integers n40n≤40 and k5k≤5.

    Return: The total number of rabbit pairs that will be present after nn months, if we begin with 1 pair and in each generation, every pair of reproduction-age rabbits produces a litter of kk rabbit pairs (instead of only 1 pair).

    Sample Dataset

    5 3
    

    Sample Output

    19

    ###Rabbits and Recurrence Relations ###
    def fib(n,k):
        a, b = 1, 1
        for i in range (2,int(n)):
            a, b = b, int(k)*a + b #只需要保存最近两个月的数量即可
        print  b
        
    if __name__ == "__main__":
        fh = open ("C:\Users\hyl\Desktop\rosalind_fib.txt")
        l = fh.readline().split(' ')
        n, k = l[0], l[1]   
        fib(n,k)
    

      

  • 相关阅读:
    【转】:java遍历List时动态添加和删除元素
    【转】:浅析 Comparable和 Comparator的区别
    【转】:Synchronized同步静态方法和非静态方法总结
    【转】:学习路线(自用)
    js原型链的理解
    关于浏览器切换标签或者移动端切换应用时,js不执行的解决方案
    .net core连接mongoDB
    首先从项目结构开始讲起
    iOS应用内支付(IAP)服务端端校验详解
    .net支付宝SDK接入这些坑你必须知道
  • 原文地址:https://www.cnblogs.com/ylHe/p/6178312.html
Copyright © 2011-2022 走看看