zoukankan      html  css  js  c++  java
  • 未名湖边的烦恼

    问题描述

      每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
      每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)
    输入格式
      两个整数,表示m和n
    输出格式
      一个整数,表示队伍的排法的方案数。
    样例输入
    3 2
    样例输出
    5
    数据规模和约定
      m,n∈[0,18]
      问题分析
     
    import java.util.*;
    
    public class Main {
        private int m;
        private int n;
        private Scanner scanner;
    
    
        //第一种解题方案
        public Main(){
            scanner = new Scanner(System.in);
            m = scanner.nextInt();
            n = scanner.nextInt();
            if(m<n)
                System.out.println(0);
            else
                System.out.println(solve(m,n));
        }
        /**
        private int solve(int i,int j){
            if (i<j){//如果剩余的m比n多一定不行
                return 0;
            }
            if(i==0){//如果n已经是0了当然可以
                return 1;
            }
    
            return solve(i-1,j) + solve(i,j-1);
        }
        */
    
        /**
         * 从第一个开始放
         * @i 代表还的人还剩i个
         * @j 代表借鞋的人还有j个
         */
        private int solve(int i,int j){
            if(i==0||j==0){
                return 1;
            }
            //如果前面放鞋子的人和借鞋子的人相等,那么此时只能还鞋子
            if(m-i==n-j){
                return solve(i-1,j);
            }
            //剩下的情况只有已经还鞋子的人比借鞋子的人多,则还鞋子和借鞋子的人都可以排在这个位置
            if(m-i>n-j)
                return solve(i-1,j) + solve(i,j-1);
            return 0;
        }
        public static void main(String[] args) {
            new Main();
        }
    }
  • 相关阅读:
    注册博客园
    算法与数据结构-树-简单-二叉搜索树中的众数
    算法与数据结构-最小化舍入误差以满足目标
    算法与数据结构-设计有限阻塞队列
    分布式学习笔记2
    JS学习笔记1
    生活-上海租房经验
    分布式技术-学习笔记1
    HashMap-线程不安全的原因
    MySQL-复制
  • 原文地址:https://www.cnblogs.com/zhanghaijie/p/8550191.html
Copyright © 2011-2022 走看看