一場球賽開始前,售票工做正在緊張的進行中.每張球票爲50元,現有m+n我的排隊等待購票,其中有m我的手持50元的鈔票,另外n我的手持100元的鈔票.假設開始售票時售票處沒有零錢,求出m+n排隊購票,算法
定義函數f(m,n)表示m我的手持50元,n我的手持100元共有的排隊種數函數
當n=0,沒有手持100元的人排隊,這個狀況是找得開錢 f(m,0) =1
ui
當m<n,(手持50元的人數小於手持100元的人數) f(m,n)=0
code
其餘狀況blog
當第m+n我的手持100元,他以前的m+n-1我的有m我的手持50元,n-1我的手持100元,共有的排隊種數爲f(m,n-1)遞歸
當第m+n我的手持50元,他以前的m+n-1我的有m-1我的手持50元,n我的手持100元,共有的排隊種數爲f(m-1,n)gui
根據上述狀況可獲得im
遞歸公式f(m,n)=f(m-1,n)+f(m,n-1)
next
遞歸出口n=0 f(m,0)=1
m<n f(m,n)=0
static
Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); int n = scanner.nextInt(); scanner.close(); long temp = digui(m, n); System.out.println(temp); } public static long digui(int m,int n){ if(n==0){ return 1; }else if(m<n){ return 0; }else{ return digui(m-1,n)+digui(m,n-1); } }