递归算法之排队购票问题(未名湖边的烦恼)java实现

时间:2022-04-01 21:33:51

动物园开张,每张票50元,有m人拿50元,有n人拿的是100元。求售票处不至于出现找不开钱的情况的排队方式的种数。
(m,n为键盘输入或题目给出;m,n∈[0,18];售票处最开始并没有零钱;拿着同样钞票的人互换位置为同一种排队方式)

public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();//拿50元的人数
int n=scanner.nextInt();//拿100元的人数
System.out.println(jisuan(m,n));
}
public static int jisuan(int m,int n){
if(n==0) return 1;
if(m<n) return 0;
//当最后一人拿的是50元时,应有jisuan(m-1, n);
//当最后一人拿的是100元时,应有jisuan(m, n-1)
else return jisuan(m-1, n)+jisuan(m, n-1);
}
}

未名湖边的烦恼一题与此题解法相同.