(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...