遞推1 兔子問題

2021-09-07 12:02:43 字數 1568 閱讀 7189

推出部分例項

仔細分析遞推公式,遞推公式如果印合例項,那就對了

有了遞推公式,程式設計很簡單。

當xyz都是1的時候,f(n)=f(n-1)+f(n-2)

仔細分析,想清楚了就好,想清楚了,就簡單了

1/*2

有一對小兔子,小兔子過z個月長大,一對大兔子x個月生y對小兔子,求n個月後的兔子總對數。34

問題一:

5有一對小兔子,小兔子過5個月長大,一對大兔子3個月生4對小兔子,求n個月後的兔子總對數。

6f(n)表示n個月後的兔子總數

7f(n)=n那個月原有的兔子+n那個月新生的兔子

8n那個月原有的兔子是:f(n-1)

9n那個月新生的兔子是:n-x那個月成熟的兔子,也就是n-x-z那個月所有的兔子,因為n-x-z那個月所有的兔子在n-x那個月的時候都成熟了

1011

故f(n)= f(n-1)+ f(n-x-z)*(y/x);這裡必須是*(y/x),這是每個月生產的。

1213

這個表示式也適合於乙個月生一對的情況;

14乙個月的情況可以看成成熟+不成熟,和原來的+新生的。而多個月的情況看成後一種比較好,因為看成前一種會超級麻煩。

1516

到本題,也就是f(n)= f(n-1)+ f(n-x-z)*y;也就是f(n)= f(n-1)+ f(n-8)*(4/3);

1718

問題二:

19有一對小兔子,小兔子過5個月長大,一對大兔子3個月生4對小兔子,求n個月後的大兔子總對數。

20用f(n)表示大兔子,那麼

21f(n)= 上個月的大兔子數+這個月新長成的大兔子數

22上個月的大兔子數是:f(n-1)

23這個月新長成的大兔子數是:因為兔子需要5個月長大,所以應該是n-5個月那個月的新出生的兔子,

24n-5個月那個月的新出生的兔子是n-5-3那個月的所有大兔子數,因為大兔子經過三個月才能下崽崽,

25故f(n)=f(n-1)+f(n-5-3)*(4/3);

26其實因為我把它看成每月生產(4/3)對兔子,所以不需要再減3

27*/

28 #include 29

using

namespace

std;

30//

前八個月的兔子總對數都是一對,inittotalrabbit[1]表示第乙個月

31double inittotalrabbit[9]=;

32double calctotalrabbit(int

n) 38

39//

前五個月的大兔子數目為0,initbigrabbit[1]表示第乙個月的大兔子數目

(遞推1)兔子繁殖問題

有一對小兔子,小兔子過z個月長大,一對大兔子x個月生y對小兔子,求n個月後的兔子總對數。當xyz都是1的時候,f n f n 1 f n 2 問題一 有一對小兔子,小兔子過5個月長大,一對大兔子3個月生4對小兔子,求n個月後的兔子總對數。f n 表示n個月後的兔子總數 f n n那個月原有的兔子 n...

遞推之生兔子,生小牛問題

time limit 1000ms memory limit 65536kb submit statistic problem description 一對成熟的兔子每天能且只能產下一對小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生後隔一天才能再生小兔子。第一天某人領養了一對成熟的兔...

SDUT 養兔子 遞推

time limit 1000 ms memory limit 65536 kib submit statistic problem description 一對成熟的兔子每天能且只能產下一對小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生後隔一天才能再生小兔子。第一天某人領養了一對成...