递归--未名湖边的烦恼
2018-02-27 20:55
183 查看
算法训练 未名湖边的烦恼 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数,表示m和n输出格式 一个整数,表示队伍的排法的方案数。样例输入3 2样例输出5数据规模和约定 m,n∈[0,18]
代码
import java.util.Scanner;
public class Main {
public static int mn(int m,int n){
if(m<n) return 0;
else if(n==0) return 1;
else return mn(m-1,n)+mn(m,n-1);
}
public static void main(String[] args) {
int n,m,mm,a,b,s;
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
m=sc.nextInt();
n=sc.nextInt();
s=mn(m,n);
System.out.println(s);
}
sc.close();
}
}
代码分析: if(m<n) return 0; 还的人比租人多0
else if(n==0) return 1; 没有租的人
else return mn(m-1,n)+mn(m,n-1); 是还了一双鞋m-1,还是租了一双鞋n-1,这里是从后往前推,因为第一个人一定是还鞋的,第二个人可还可借,再往后越来越复杂,但是最后一个人却没有限制,可以是还鞋的,也可以是借鞋子的,这样往前推。
这题我一A为什么,因为我是baidu的,我也不想,我没脑子我能怎么办,我当时想方法是当成排列组合,先求n个人还n个人借这种情况,再乘m-n个还鞋的人随便插入到n个借鞋子的人的情况,ennnnnnn,对于n个人还n个人借这种情况,随便排列的1/2是符合情况的,然后算,结果错了,因为有很多重复的。。。。。。。。怎么删除重复的。。。。。我还是放弃吧
最后我去百度怎样提高脑洞
1、首先学会摹仿。
2、丰富知识经验。
3、提高文艺修养。
4、善于进行观察。
5、培养多种爱好。
6、丰富表象储备。
7、闭目尽情想象。
8、培养丰富情感。
这个我很满意,因为我迈出了第一步,模仿别人的代码。。。。。算了,我就是没脑子
每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数,表示m和n输出格式 一个整数,表示队伍的排法的方案数。样例输入3 2样例输出5数据规模和约定 m,n∈[0,18]
代码
import java.util.Scanner;
public class Main {
public static int mn(int m,int n){
if(m<n) return 0;
else if(n==0) return 1;
else return mn(m-1,n)+mn(m,n-1);
}
public static void main(String[] args) {
int n,m,mm,a,b,s;
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
m=sc.nextInt();
n=sc.nextInt();
s=mn(m,n);
System.out.println(s);
}
sc.close();
}
}
代码分析: if(m<n) return 0; 还的人比租人多0
else if(n==0) return 1; 没有租的人
else return mn(m-1,n)+mn(m,n-1); 是还了一双鞋m-1,还是租了一双鞋n-1,这里是从后往前推,因为第一个人一定是还鞋的,第二个人可还可借,再往后越来越复杂,但是最后一个人却没有限制,可以是还鞋的,也可以是借鞋子的,这样往前推。
这题我一A为什么,因为我是baidu的,我也不想,我没脑子我能怎么办,我当时想方法是当成排列组合,先求n个人还n个人借这种情况,再乘m-n个还鞋的人随便插入到n个借鞋子的人的情况,ennnnnnn,对于n个人还n个人借这种情况,随便排列的1/2是符合情况的,然后算,结果错了,因为有很多重复的。。。。。。。。怎么删除重复的。。。。。我还是放弃吧
最后我去百度怎样提高脑洞
1、首先学会摹仿。
2、丰富知识经验。
3、提高文艺修养。
4、善于进行观察。
5、培养多种爱好。
6、丰富表象储备。
7、闭目尽情想象。
8、培养丰富情感。
这个我很满意,因为我迈出了第一步,模仿别人的代码。。。。。算了,我就是没脑子
相关文章推荐
- 蓝桥杯-未名湖边的烦恼-递归-java
- 蓝桥杯--算法训练 未名湖边的烦恼 (递归)
- 蓝桥杯 算法训练 未名湖边的烦恼 (递推,递归)
- 蓝桥杯--算法训练 未名湖边的烦恼 (递归)
- 蓝桥杯ALGO122 未名湖边的烦恼(递归 递推)
- 未名湖的烦恼的递归问题
- 蓝桥杯 未名湖的烦恼(递归)
- 蓝桥杯 未名湖边的烦恼 引发的递归问题探讨
- 未名湖边的烦恼 动态规划+递归解法说明
- 蓝桥杯 未名湖边的烦恼 (递归)
- 蓝桥杯算法训练——未名湖边的烦恼 (递归)
- 蓝桥杯 - 未名湖边的烦恼(递归)
- 蓝桥杯--未名湖边的烦恼 --- 递归
- 算法训练 未名湖边的烦恼
- 未名湖边的烦恼
- 蓝桥杯 算法训练 未名湖边的烦恼
- 未名湖的烦恼
- 蓝桥杯 未名湖边得烦恼
- 蓝桥杯 算法训练 未名湖边的烦恼
- 算法-蓝桥杯-算法训练 未名湖边的烦恼 (JAVA)