蓝桥杯<<未名湖边的烦恼>>
2017-02-26 11:03
162 查看
[align=center] 算法训练 未名湖边的烦恼 [/align][align=center]时间限制:1.0s 内存限制:256.0MB[/align] 锦囊1锦囊2锦囊3问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)输入格式 两个整数,表示m和n输出格式 一个整数,表示队伍的排法的方案数。样例输入3 2样例输出5数据规模和约定 m,n∈[0,18] 问题分析第一次见到这题的时候第一感觉是用递归可以写,但却进入了一个误区,导致一直未能解出答案;首先来分析下有两种情况:1、n>m 很明显方案数为0;2、m>n;我们来讨论m>n,首先队列中还鞋的人数一定等于或大于借鞋人数,若等于的那么下一个人必须为还鞋的,若等于那么下一个就还鞋或借鞋都可;源代码如下:
#include<iostream>using namespace std;int n,m;int px(int huan,int jie){if(!huan) return 1;//还未进入队列的还鞋的人数以为0;if(!jie) return 1;//还未进入队列的借鞋的人已经为0if(m-huan>n-jie) return px(huan-1,jie)+px(huan,jie-1);//队列中还鞋的人大于借鞋的if(m-huan==n-jie) return px(huan-1,jie);//队列中还鞋的人等于借鞋的}int main(){cin>>m>>n;if(n>m) cout<<0;else cout<<px(m,n);return 0;}
相关文章推荐
- 小细节大烦恼——<a>的四种伪类
- Cocos2d-x中Vector<T>容器以及实例介绍
- 蓝桥杯-未名湖边的烦恼-递归-java
- struts2中<jsp:forward>跳转时报404错误的问题
- 如何删除strut2校验后<s:fielderror>在jsp页面输出时的小黑点和自动换行?
- java异常处理<1>__笔记(17)
- HashMap<string, ...> 能有多快
- vector<vector<int>>的输入
- DataGridView 控件绑定List<T>
- SQL Server 重建索引|索引重组|索引的碎片检查 (MSSQL个人笔记之数据库优化之路 六<SQL2005以上>)
- 『黑马程序员』第六话<IO流>
- c# List<int> 转 string 以及 string [] 转 List<int>
- <Web>地理定位API如何确定你的位置
- json 实体互转, list json互转 ,List<实体> 转List<Object> , List<Objcet> 转List<Map> map 转实体 , map转json
- SQL Server优化的方法<二>
- 黑马学习笔记——public void Delete<T>(List<T> EntityList) where T : class, new() 的用法
- 使用Java代码遍历以获取Map<String,Object>的值
- vector<vector<int>>的输入相关
- power desinger 学习笔记<五>
- <string><cstdlib><ctime><cstdarg><ctime><ctype><cmath><climits>