博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬楼梯与未名湖的烦恼
阅读量:5102 次
发布时间:2019-06-13

本文共 1248 字,大约阅读时间需要 4 分钟。

问题描述

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

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

输入格式

两个整数,表示m和n

输出格式

一个整数,表示队伍的排法的方案数。

样例输入

3 2

样例输出

5

数据规模和约定

m,n∈[0,18]

问题分析: 首先我们要明确这个是排队问题,类比于爬楼梯问题

//未名湖的烦恼#include
using namespace std;int f(int m,int n){ if(n>m||(m<1&&n<1)) return 0; if(n==0) return 1; return f(m-1,n)+f(m,n-1);}int main(){ int m,n; //必须满足m>=n cout<
<
View Code

FangAn(3,2)=FangAn(2,2)+FangAn(3,1)

=FangAn(1,2)+FangAn(2,1) + FangAn(2,1)+FangAn(3,0)
=0 + FangAn(1,1)+FangAn(2,0) + FangAn(1,1)+FangAn(2,0) + 1
=0 + FangAn(0,1)+FangAn(1,0) + 1 + FangAn(0,1)+FangAn(1,0) + 1 + 1
=0+0+1+1+0+1+1+1
=5

爬楼梯:

描述

树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数
例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级
也可以第一次走两级,第二次走一级,一共3种方法。

输入

输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= N <= 30
输出
不同的走法数,每一行输入对应一行输出
样例输入
5
8
10
样例输出
8
34
89

//爬楼梯#include
int it(int n){ if(n==1)return 1; else if(n==2) return 2; else return it(n-2)+it(n-1);}int main(){ int n; while(scanf("%d",&n)!=EOF) { printf("%d\n",it(n));} return 0;}
View Code

总结:两个问题都是排队问题,因变量不同,爬楼梯为一个,未名湖为两个,

转载于:https://www.cnblogs.com/helloworld2019/p/10387513.html

你可能感兴趣的文章
Spring 整合 Redis
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
如何激活 Trend Micro Deep Security Agent
查看>>
SQLite3初探
查看>>
多线程/多进程/异步IO
查看>>
控制层解析post请求中json数据的时候,有些属性值为空
查看>>
leetcode 442. 数组中重复的数据 java
查看>>
struts2 文件上传下载注解示例
查看>>
编写一个简单的JAVA WEB Servlet页面
查看>>
JSP:Cookie实现永久登录(书本案例)
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
linux--GCC用法
查看>>
Ubuntu下安装MySQL及简单操作
查看>>
OWIN是什么?
查看>>
前端监控
查看>>
centos6.5 mysql忘记登入密码
查看>>
畅通工程(kruskal算法)
查看>>
Trusted Execution Technology (TXT) --- 启动控制策略(LCP)篇
查看>>
clipboard.js使用方法
查看>>