第五届蓝桥杯决赛B组C/C++——出栈次序

标题:出栈次序

X星球特别讲究秩序,所有道路都是单行线。一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行。路边有个死胡同,只能容一辆车通过,是临时的检查站,如图【p1.png】所示

图1

X星球太死板,要求每辆路过的车必须进入检查站,也可能不检查就放行,也可能仔细检查。如果车辆进入检查站和离开的次序可以任意交错。那么,该车队再次上路后,可能的次序有多少种?为了方便起见,假设检查站可容纳任意数量的汽车。显然,如果车队只有1辆车,可能次序1种;2辆车可能次序2种;3辆车可能次序5种。

现在足足有16辆车啊,亲!需要你计算出可能次序的数目

答案:35357670

最简单的办法就是递归,递归分三种情况考虑就行了

  1. 当车道左边没车,不管这时检查站里面有没有车,都只有一种次序 return 1
  2. 当左边有车,检查站里面没车,按照题目要求,每辆车都必须要进检查站,所以左边车的数量-1,检查站内车的数量+1 return f(n-1,1)
  3. 如果检查站里面有车,这种情况下的方案数是两个递归的和,这两个递归分别对应的情况是:左边再来一辆车进站和从检查站出去一辆车 return f(n - 1,m + 1) + f(n,m - 1)
#include <bits/stdc++.h>
using namespace std;
int f(int n,int m)//左边车的数量,检查站的中的数量 
{
	int a;
	if(n == 0)//如果左边没车 
		return 1;
	if(m == 0)//如果检查站没车,就要入站 
		return f(n - 1,1);
	if(m > 0)//如果检查站有车 
	//分两种情况:1.左边再来一辆车进站 2.检查站出去一辆车 
		return f(n - 1,m + 1) + f(n,m - 1); 
} 
int main()
{
	cout<<f(16,0);
	return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

从sql server 中读取二进制图片

391
来自专栏田超学前端

【微信小程序】c# 实现获取openid、session_key 服务端

4900
来自专栏hbbliyong

socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅

1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样...

2737
来自专栏张善友的专栏

通过SmtpClient发送Exchange会议邮件

看到C#中调用Outlook API 发起会议 ,这个完全可以用SMTP方式实现的,下面我的项目中使用的代码: 对于.NET而言,从2.0开始,发邮件已经是一件...

1929
来自专栏james大数据架构

CSS好看的按钮

好看的按钮 <style> .btn { BORDER-RIGHT: #7b9ebd 1px solid; PADDING-RIGHT: 2px; BORDE...

1997
来自专栏.net core新时代

数据字典生成工具之旅(5):DocX组件读取与写入Word

      由于上周工作比较繁忙,所以这篇文章等了这么久才写(预告一下,下一个章节正式进入NVelocity篇,到时会讲解怎么使用NVelocity做一款简易的...

3848
来自专栏技术之路

sqlserver 的事务和c#的事务

sql的事务 1 sql 2 create database model 3 go 4 use model 5 go 6 create table ...

1919
来自专栏张善友的专栏

Quartz.net官方开发指南 第一课:使用Quartz.net

使用scheduler之前应首先实例化它。使用SchedulerFactory可以完成scheduler的实例化。用户可直接地实例化这个工厂类并且直接使用工厂的...

21210
来自专栏跟着阿笨一起玩NET

C#将数据以XML格式写入Excel

本文转载:http://www.cnblogs.com/eflylab/archive/2008/09/21/1295580.html

742
来自专栏木宛城主

曾今的代码系列——自己的分页控件+存储过程实现分页

项目里面的测试代码,仅供参考 LoginByAjax <title>Ajax登陆</title> <script src="Scripts/c...

1855

扫码关注云+社区