算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
目录
1 问题描述
2 解决方案
2.1 递归法
2.2 递推法
1 问题描述
每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)
问题分析
2 解决方案
2.1 递归法
共有m个人还鞋,n个人借鞋,记最终排列数为f(m, n)。
现在求m和n的排队情况,具体理解如下:
起始,要去一人还鞋(PS:此时,m = m - 1),还完后,可以选一人还鞋(PS:m = m - 1)或者一人借鞋(PS:n = n - 1)。
那么,f(m , n) = f(m - 1, n) + f(m, n - 1)。这就是求取f(m, n)的递推公式,那么轻易可知当m < n时,f(m, n) = 0;当n = 0时,f(m, 0) = 1。
具体代码如下:
package com.liuzhen.systemExe;import java.util.Scanner;public class Main{//m代表还鞋的人数,n代表借鞋的人数public int getArrange(int m, int n) {if(m < n)return 0;if(n == 0)return 1;return getArrange(m - 1, n) + getArrange(m, n - 1);}public static void main(String[] args){Main test = new Main(); Scanner in = new Scanner(System.in);// System.out.println("请分别输入还鞋人数m和和借鞋人数n:");int m = in.nextInt();int n = in.nextInt();System.out.println(test.getArrange(m, n));} }
运行结果:
请分别输入还鞋人数m和和借鞋人数n: 3 2 5请分别输入还鞋人数m和和借鞋人数n: 12 7 23256
2.2 递推法
具体代码如下:
package com.liuzhen.systemExe;import java.util.Scanner;public class Main{//m代表还鞋的人数,n代表借鞋的人数public int getArrange1(int m, int n) {int[][] result = new int[m + 1][n + 1]; //初始化元素全为0for(int i = 1;i <= m;i++) {result[i][0] = 1; //当借鞋的人数为0时,排列只有一种情况for(int j = 1;j <= n;j++) {if(i >= j) //当i小于j时,排列总数为0result[i][j] = result[i - 1][j] + result[i][j - 1];}}return result[m][n];}public static void main(String[] args){Main test = new Main(); Scanner in = new Scanner(System.in);// System.out.println("请分别输入还鞋人数m和和借鞋人数n:");int m = in.nextInt();int n = in.nextInt();System.out.println(test.getArrange1(m, n));} }
运行结果:
请分别输入还鞋人数m和和借鞋人数n: 12 7 23256请分别输入还鞋人数m和和借鞋人数n: 4 3 14
参考资料:
1. 蓝桥杯 算法训练 未名湖边的烦恼
2.算法训练 未名湖边的烦恼【dp+递推】
3.蓝桥--未名湖边的烦恼 (递推)
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)相关推荐
- 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负 ...
- 算法提高 求最大值java_算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
1 问题描述 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负. 输入格式 输入的第一行为n,数对的 ...
- 蓝桥杯之未名湖边的烦恼-递归极简版(c++实现)
上文链接:蓝桥杯之Remember the A La Mode-需要谨慎处理逻辑关系(c++实现) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好 ...
- 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n ...
- 算法笔记_120:蓝桥杯第六届省赛(Java语言B组部分习题)试题解答
目录 1 三角形面积 2 立方变自身 3 三羊献瑞 4 九数组分数 5 饮料换购 6 生命之树 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 三角形面积 三角形 ...
- 算法笔记_080:蓝桥杯练习 队列操作(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出. 输入格式 第一行一个数字N. 下面N行, ...
- 算法笔记_100:蓝桥杯练习 算法提高 三个整数的排序(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 输入三个数,比较其大小,并从大到小输出. 输入格式 一行三个整数. 输出格式 一行三个整数,从大到小排序. 样例输入 33 88 77 样 ...
- 算法笔记_094:蓝桥杯练习 矩阵相乘(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然,小明上课打瞌睡也没问题,但线性 ...
- Java算法学习:蓝桥杯——地宫寻宝(DFS+动态规划—记忆型递归)
Java算法学习:蓝桥杯--地宫寻宝(DFS✖记忆型递归) 题目: 标题:地宫取宝X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出 ...
最新文章
- 掌握JAVA多线程的利器-线程池
- qt windows通过usb获取手机电量_华为手机系统故障修复及系统升级
- VS2013安装oepncv2.4.10 以及opencv 3.0.0
- 各种震撼的慢镜头,奇怪的知识又增加了!​
- CPP_封装_继承_多态
- 【转】WCF、WebAPI、WCFREST、WebService之间的区别
- Chrome 爬虫插件 Web Scraper
- Java自动生成增量补丁自动部署_java-Hibernate正在为表生成自动增量交替ID
- Centos7 防火墙开启端口
- 如何保证企业IT基础设施的高可用性
- SMbus和I2C异同, PMBUS
- C语言实数除法怎样保留小数(编程技巧)
- 如何进行IP子网划分
- 【千锋】网络安全笔记(总篇)--- 持续更新
- ajax前后端分离ckeditor,CKEditor富文本编辑器
- 谷歌2018年IO大会
- CPP2022-16-宏、函数重载与函数模板
- 交通大数据应用场景——高速落地检
- 数据结构——栈的使用
- Excel公式-TEXT函数使用