未名湖边的烦恼

问题描述  

每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。

  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)

输入格式 

两个整数,表示m和n

输出格式  

一个整数,表示队伍的排法的方案数。样例输入3 2样例输出5数据规模和约定  m,n∈[0,18]

问题分析这是一种类似汉诺塔问题的题目,首先要保证换鞋的人m 多于借鞋的人n。否则,无论怎么排序,都是会出现无鞋可借的尴尬局面。

所以,首先判断(m>n),否则返回0,表示没有方法来排序。

之后,当还鞋的人数n为0 的时候,这时候无论怎么排序都是一种方法,所以这时候函数返回的是1;

#include "iostream"
using namespace std;
int fun(int m,int n)
{if(m<n){return 0;}else if (n==0){return 1;}else return fun(m-1,n)+fun(m,n-1);
}
int main()
{int m,n;cout<<"输入还鞋人m,借鞋人n"<<endl;cin>>m>>n;cout<<"有"<<fun(m,n)<<"排序方法"<<endl;return 0;
}

这里的return fun(m-1,n)+fun(m,n-1)  前面的fun(m-1,n)意思是还鞋子的一个人站在最前面,之后剩下的哪些人再接着排序,fun(m,n-1) 意思是借鞋子的人站在最后面,剩下的再接着排序。

猴子吃桃问题

问题描述:猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?

同样还有一道猴子吃桃问题也可以用递归来解决。

public class Cpeach {public int eat02(int n) {System.out.println("f(" + n + ")进栈");if (n == 1) {System.out.println("到达最大深度!");System.out.println("f(" + n + ")出栈");return 1;} else {int a = eat02(n - 1) * 2 + 2;System.out.println("f(" + n + ")出栈");return a;}}public static void main(String[] args) {int n = 10;Cpeach pea = new Cpeach();int num = pea.eat02(n);System.out.println(num);}
}


在此,特地有了出栈和进栈来清楚的表示对递归对系统栈的影响。

从上面,可以清楚的看到栈对空间复杂度的影响。

1加到100的数学题

其实高斯小时候的从1加到100的数学题也是可以用递归方法来解决的。

public class NumOneToHundred {public int add(int n) {if(n == 1){return 1;}else{return add(n-1) +n;}}public static void main(String[] args) {int n = 100;NumOneToHundred a = new NumOneToHundred();int sum = a.add(n);System.out.println(sum);}
}

爬楼梯问题:

一段楼梯共n级台阶,每次只能走一级或两级,问共有多少种走法?列出n=10时的所有走法。

乍看知道问题感觉还是稍显的有些麻烦,我们这样子来想,假如 n = 7 时,最后一步是会有f(7) = f(5) + f(6)

得在 n = 1和2的时候,我们得到f(1),f(2)为1

所以,我们到下面的公式

说白了,这个其实就是斐波那契数列

public class ClimbStairs {public int stairs(int n) {if (n == 1)return 1;if (n == 2)return 2;else {return stairs(n - 1) + stairs(n - 2);}}public static void main(String[] args) {int n = 7;ClimbStairs cs = new ClimbStairs();int sum = cs.stairs(n);System.out.println(sum);}}

递归问题的时间和空间复杂度都是巨大的,在项目过程中要尽量减少使用。

递归虽好,不要贪杯!

未名湖边的烦恼引起的递归问题探讨相关推荐

  1. 蓝桥杯 未名湖边的烦恼 引发的递归问题探讨

    未名湖边的烦恼 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要 ...

  2. 算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)

    目录 1 问题描述 2 解决方案 2.1 递归法 2.2 递推法   1 问题描述 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰 ...

  3. java 蓝桥杯算法训练 未名湖边的烦恼

    试题 算法训练 未名湖边的烦恼 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一 ...

  4. 关于未名湖边的烦恼问题

    昨天,我很受伤,自尊心严重受损,一切的一切都来源于一道题--未名湖边的烦恼,这是蓝桥杯官网的一道题,我看到后一直没有思路,最后无奈之下,我去百度上找了一篇讲这个题的博客,轻轻松松的就找到了,然而它里面 ...

  5. 蓝桥杯 未名湖边的烦恼

    蓝桥杯 未名湖边的烦恼 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个 ...

  6. 蓝桥杯-未名湖边的烦恼(java)

    算法训练 未名湖边的烦恼 时间限制:1.0s 内存限制:256.0MB问题描述每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩.每天早 ...

  7. Java实现 蓝桥杯 算法训练 未名湖边的烦恼

    算法训练 未名湖边的烦恼 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. ...

  8. 蓝桥杯之未名湖边的烦恼-递归极简版(c++实现)

    上文链接:蓝桥杯之Remember the A La Mode-需要谨慎处理逻辑关系(c++实现) 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 每年冬天,北大未名湖上都是滑冰的好 ...

  9. 未名湖边的烦恼-蓝桥杯算法训练题-递推/递归

    问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩. 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个.现在 ...

最新文章

  1. 如何开发一个属于自己的小程序
  2. python的编程模式-python编程(python开发的三种运行模式)【转】
  3. PHP的学习--解析URL
  4. 精通C++之前,你必须知道的几件事!
  5. JS移动客户端--触屏滑动事件 banner图效果
  6. Camel中的几个重要概念之 Components
  7. 深入浅出SQL(2)——select、update…
  8. Delphi TXLSReadWriteII导出Excel
  9. php mysql备份类_php MYSQL 数据备份类
  10. Linux终端常用快捷键总结
  11. 前后端整合---js对象方法---异步组件
  12. JavaScript-参数
  13. 20155213免考项目——简易的HIDAttack
  14. 极客大学架构师训练营 系统架构 CAP原理 分布式系统脑裂 第六次作业
  15. SpringMVC中请求的转发和重定向
  16. sql server 常用工具
  17. 供应链金融与区块链02——论文阅读
  18. Ubuntu17.04系统安装必备软件与存在的问题
  19. UG NX2007调出Drill钻孔命令的方法
  20. 千兆12光12电管理型工业以太网交换机 12千兆光12千兆电口宽温环网交换机

热门文章

  1. .NET Core使用Cookie做身份验证
  2. Linux系统中more和less命令的区别
  3. 英文字体免费下载:10款最新的高品质字体
  4. 免费字体下载,在线设计,不怕找不到好字体
  5. 一不小心做出四皇冠淘宝店,她在小类目里找到大商机 | 菁英汇故事
  6. 审批流程java 代码_基于jsp的企业流程审批系统-JavaEE实现企业流程审批系统 - java项目源码...
  7. windows 安装es环境,手把手教学
  8. 农业信息化让农民“心明眼亮”
  9. C语言,输出变量的地址
  10. 超大跨度桥梁建设如何突破特异风致灾风险的困局?