蓝桥杯 算法训练 ALGO-122 未名湖边的烦恼
算法训练 未名湖边的烦恼
时间限制:1.0s 内存限制:256.0MB
问题描述
每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)
每天早上,租鞋窗口都会排起长龙,假设有还鞋的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 }