1. 程式人生 > >藍橋杯-演算法訓練 未名湖邊的煩惱 (遞迴)

藍橋杯-演算法訓練 未名湖邊的煩惱 (遞迴)

 演算法訓練 未名湖邊的煩惱   時間限制:1.0s   記憶體限制:256.0MB      問題描述   每年冬天,北大未名湖上都是滑冰的好地方。北大體育組準備了許多冰鞋,可是人太多了,每天下午收工後,常常一雙冰鞋都不剩。
  每天早上,租鞋視窗都會排起長龍,假設有還鞋的m個,有需要租鞋的n個。現在的問題是,這些人有多少種排法,可以避免出現體育組沒有冰鞋可租的尷尬場面。(兩個同樣需求的人(比如都是租鞋或都是還鞋)交換位置是同一種排法) 輸入格式   兩個整數,表示m和n 輸出格式   一個整數,表示隊伍的排法的方案數。 樣例輸入 3 2 樣例輸出 5 資料規模和約定   m,n∈[0,18]
  問題分析

 演算法分析:利用遞迴就可以實現,具體看程式碼實現

 

 1 #include<stdio.h>
 2 int f(int m, int n)
 3 {
 4     //當m = 0時,不滿足
 5     if(m == 0)    return 0;
 6     //當n = 0時,只有一種情況
 7     if(n == 0)    return 1;
 8     //當m = 1並且n = 1時只有一種情況
 9     if(m == 1 && n == 1)    return 1;
10     //當m < n時不滿足
11     if(m < n)    return 0;
12 //其他情況 13 return f(m-1, n) + f(m, n-1); 14 } 15 int main() 16 { 17 int m, n; 18 scanf("%d%d",&m,&n); 19 printf("%d\n",f(m, n)); 20 return 0; 21 }