推出部分例項
仔細分析遞推公式,遞推公式如果印合例項,那就對了
有了遞推公式,程式設計很簡單。
當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天,小兔子出生後隔一天才能再生小兔子。第一天某人領養了一對成...