日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Rabbits and Recurrence Relations

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,π)?and the infinite sequence of odd numbers?(1,3,5,7,9,). We use the notation?an?to represent the?n-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?Fn?represents the number of rabbit pairs alive after the?n-th month, then we obtain the?Fibonacci sequence?having terms?Fn?that are defined by the recurrence relation?Fn=Fn?1+Fn?2?(with?F1=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?n-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?n. 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?n40?and?k5.

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


斐波那契數列的一點改變,生育年齡的兔子每次生育不止一個兔子。所以公式修改為Fn=Fn?1+K*Fn?2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

使用dp,就是不要按照題面意思用遞歸了,算過的就不算了,這樣時間復雜度大大下降O(n)

本來想用dict,實現一個map,然后判斷序列每個數字是否算過了,最后還是建了兩個list

搞不懂 input 的值為什么都視為 str ,python 3里 input 和raw_input 是一樣的,沒有raw_input ?了。但是必須把變量轉換成int 才能算,不知道為什么。

還有就是對于list 未定義的區域,一定要先初始化值,不然直接使用會冒出奇怪的數字。 先 append(0)

n=input("n is:\n") k=input("k is:\n") #dynamic programming f_seq=[1,1]; bool_list=[1,1,0]; for i in range(2,int(n)):if(bool_list[i]==0):f_seq.append(f_seq[i-1]+int(k)*f_seq[i-2])bool_list[i]=1bool_list.append(0)i+=1;else:bool_list.append(0)i+=1; print(f_seq[int(n)-1]);

總結

以上是生活随笔為你收集整理的Rabbits and Recurrence Relations的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。