您的位置:首页 > 编程语言 > Java开发

算法-蓝桥杯-算法训练 未名湖边的烦恼 (JAVA)

2018-03-26 16:09 302 查看

1 引言

    递归,递归,递归。

2 题目

问题描述  每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式  两个整数,表示m和n输出格式  一个整数,表示队伍的排法的方案数。样例输入3 2样例输出5数据规模和约定  m,n∈[0,18]
  问题分析

3 源代码

import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
sc.close();
System.out.println(function(m,n));
}
private static int function(int m,int n)
{
if(m<n)
return 0;
if(n==0)
return 1;
return function(m-1,n)+function(m,n-1);
}
}

4 思路讲解

    当m<n时,此时的还鞋人数少于租鞋人数,没有队伍可以排。所以方法数为0,当n=0时,即没有租鞋的人时,排队情况只有一种。当有一个人去还鞋时(此时m=m-1),就可以有一个人去还鞋(m=m-1),或者一个人去租鞋(n=n-1)。这也就是第贵的方程。

5 结束语

    可以参考这两篇博客的讲解。第一个链接第二个链接
    分享和帮助是人生一大乐事,希望可以帮助您。本人才疏学浅,如果有不当之处,还请批评指正。同时欢迎大家评论、点赞及转发!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息