蓝桥杯 算法训练 ALGO-122 未名湖边的烦恼

算法训练 未名湖边的烦恼  
时间限制:1.0s   内存限制:256.0MB
问题描述
  每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)
输入格式
  两个整数,表示m和n
输出格式
  一个整数,表示队伍的排法的方案数。
样例输入
3 2
样例输出
5
数据规模和约定
  m,n∈[0,18]
 
示例代码:
 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 
 5 public class Main {
 6     public static void main(String[] args) throws NumberFormatException, IOException {
 7         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 8         String[] str = br.readLine().split(" ");
 9         long m = Long.parseLong(str[0]);
10         long n = Long.parseLong(str[1]);
11         
12         long ans = program(m,n);
13         
14         System.out.println(ans);
15 
16     }
17     
18     /**
19      * 队伍排列
20      * @param m  还鞋人数
21      * @param n  租鞋人数
22      * @return      队伍排列方案数
23      */
24     public static long program(long m, long n){
25         if(m<n)            //如果还鞋的人数小于租鞋的人数,则就会出现无鞋可租的情况
26             return 0;
27         else if(n==0)    //如果没有租鞋的人,则只有一种情况,即为还鞋的人
28             return 1;
29         else
30             return program(m-1, n) + program(m, n-1); //第一个人来还鞋 + 第一个人来租鞋
31     }
32 
33 }
原文地址:https://www.cnblogs.com/cao-lei/p/6724619.html