若干藍橋杯遞迴題

2022-01-25 06:14:09 字數 2409 閱讀 1461

(1)放蘋果:m個同樣的蘋果放n個同樣的盤子,允許有盤子空著, 問有多少種放法。

注意:5 1 1和1 5 1是同一種放法     

分析:分兩種情況:     

a.至少有乙個盤子為空。此時放法種數與減去這個空盤子的放法種數相同。     

b.所有盤子都不為空。此時可以從每個盤子裡拿掉乙個蘋果而不影響放法種數。    

顯然m很好的演算法: f(m, n) = f(m-n, n) + f(m, n-1)

f(m, n): 把m個蘋果放到n個盤子中的方法數 f(m, n-1): 把m個蘋果放到n-1個盤子中的方法數(其中至少有乙個空盤子) f(m-n, n): 把m個蘋果放到n個盤子中,而且每個盤子中都有蘋果(先拿n個出來,等m-n個放好了,然後每個盤子放乙個)

1n)2

(2)計算3個a,2個b可以組成多少種排列的問題(如:aaabb, aabba)是《組合數學》的研究領域。但有些情況下,也可以利用計算機計算速度快的特點通過巧妙的推理來解決問題。下列的程式計算了m個a,n個b可以組合成多少個不同排列的問題。請完善它。

int f(int m, int n)    

分析:首先明確這個函式的功能是:求m個a和n個b可以組成多少種排列。

此時分兩種情況:      a.排列的第乙個元素是a。      b.排列的第乙個元素是b。

把這兩種情況的排列種數加起來即可.

(3)某布袋中有紅球m個,白球n個,現在要從中取出x個求,紅球數目多於白球的數目的概率是多少。下面的**解決這個問題,其中y表示紅球至少要出現的次數。

分析:明確函式的定義:求m個紅球、n個白球的布袋中取出x個球,紅球數目大於白球的概率。注意到m/(m+n)表示取出的球是紅球的概率,n/(m+n)表示取出的球是白球的概率。現在從布袋中取乙個球出來

有兩種情況:

a.取出的是紅球

b.取出的是白球.

然後根據不同的情況判斷m、n、x、y的變化。

1

**:2

//m個紅球,n個白球,從中取出x個求,y表示紅球至少要出現的次數

3double f( int m, int n, int x,inty)4

4)假設有m+n個人,其中,m個人手持面額為5角的硬幣,n個人手持面額為1元的硬幣,他們都要乘車買票,現假設售票員手中無零鈔,票價為5角,下面這個函式就可以算出這m+n個人所有可能的買票情況(順利

完成購票過程的購票次序的種類數),請完善此函式 int f(int m, int n) 

一般的想法是從前往後發現規律,但這題確是從後考慮。

分兩種情況:

(1)最後乙個上車的,持有1元硬幣。           前m+n-1個人有:f(m,n-1)

(2)最後乙個上車的,持有0.5元硬幣。           前m+n-1個人有:f(m-1,n)

(5)整數劃分

如,對於正整數n=6,可以分劃為:

6 5+1

4+2, 4+1+1

3+3, 3+2+1, 3+1+1+1

2+2+2, 2+2+1+1, 2+1+1+1+1

1+1+1+1+1+1+1

總共有十一種劃分,求乙個數總共有多少種這樣的劃分。

根據n和m的關係,考慮以下幾種情況:

(1)當n=1時,不論m的值為多少(m>0),只有一種劃分即;

(2)  當m=1時,不論n的值為多少,只有一種劃分即n個1,;

(3)  當n=m時,根據劃分中是否包含n,可以分為兩種情況:

(a). 劃分中包含n的情況,只有乙個即;

(b). 劃分中不包含n的情況,這時劃分中最大的數字也一定比n小,即n的所有(n-1)劃分。

因此 f(n,n) =1 + f(n,n-1);

(4) 當n(5) 但n>m時,根據劃分中是否包含最大值m,可以分為兩種情況:

(a). 劃分中包含m的情況,即}, 其中 的和為n-m,可能再次出現m,因此是(n-m)的m劃分,因此這種劃分

個數為f(n-m, m);

(b). 劃分中不包含m的情況,則劃分中所有值都比m小,即n的(m-1)劃分,個數為f(n,m-1);

因此 f(n, m) = f(n-m, m)+f(n,m-1);

綜合以上情況,我們可以看出,上面的結論具有遞迴定義特徵,其中(1)和(2)屬於回歸條件,(3)和(4)屬於特殊情況,將會轉換為情況(5)。而情況(5)為通用情況,屬於遞推的方法,其本質主要是通過減小m以達到回歸條件,從而解決問題。其遞推表示式如下:

f(n, m)=       1;                                (n=1 or m=1)

f(n, n);                         (n1+ f(n, m-1);                (n=m)

f(n-m,m)+f(n,m-1);       (n>m)

藍橋杯 遞迴問題

深入遞推,逐級回退 遞迴問題 深搜dfs 在有條件的情況下試探各種情況 找出口 遞迴的終止條件 遞迴函式引數邊界值的界定 思想 1.src上的n 1個盤子移到medium 2.src剩下的乙個最大的盤子移到dest 3.medium上的n 1個盤子移到dest 把src最上面的乙個盤子移到dest ...

藍橋杯 遞迴 2 24

回形取數 藍橋杯 基礎練習 問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,為輸入矩陣...

藍橋杯歷屆真題 遞迴 牌型種數

小明被劫持到x賭城,被迫與其他3人玩牌。一副撲克牌 去掉大小王牌,共52張 均勻發給4個人,每個人13張。這時,小明腦子裡突然冒出乙個問題 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?請填寫該整數,不要填寫任何多餘的內容或說明文字。答案 3...