题目描述 Description

栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。

栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。

栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙

宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n。

现在可以进行两种操作,

1.将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的push操作)

2. 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的pop操作)

使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由1 2 3生成序列2 3 1的过程。(原始状态如上图所示) 。

你的程序将对给定的n,计算并输出由操作数序列1,2,…,n经过操作可能得到的输出序列的总数。

输入描述 Input Description

输入文件只含一个整数n(1≤n≤18)

输出描述 Output Description

输出文件只有一行,即可能输出序列的总数目

样例输入 Sample Input

3

样例输出 Sample Output

5

思路:

求出栈次序是Catalan数的一个重要应用

首先,我们设f(n)=序列个数为n的出栈序列种数。我们假定,最后出栈的元素为k,显然,k取不同值时的情况是相互独立的,也就是求出每种k最后出栈的情况数后可用加法原则,由于k最后出栈,因此,在k入栈之前,比k小的值均出栈,此处情况有f(k-1)种,而之后比k大的值入栈,且都在k之前出栈,因此有f(n-k)种方式,由于比k小和比k大的值入栈出栈情况是相互独立的,此处可用乘法原则,f(n-k)*f(k-1)种,求和便是Catalan递归式。

Catalan数的相关知识:

令h(0)=1,h(1)=1,catalan数满足递推式:
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)
另类递推式 :
h(n)=h(n-1)*(4*n-2)/(n+1);★
递推关系的解为:
h(n)=C(2n,n)/(n+1) (n=0,1,2,...)
递推关系的另类解为:
h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)
 
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
long long f=;
for(int i=;i<=n;i++)
f=f*(i*-)/(i+);
cout<<f;
}

最新文章

  1. MySQL 远程连接(federated存储引擎)
  2. jQuery系列:五个模块总结
  3. 第 13 章 CSS 选择器[上]
  4. OpenCV 2.4.11 VS2010 Configuration
  5. JavasScript判断输入框不为空
  6. Android百度地图开发02之添加覆盖物 + 地理编码和反地理编码
  7. WebApi授权拦截——重写AuthorizeAttribute
  8. 那天有个小孩跟我说LINQ(五)转载
  9. mysql INNODB_TRX 事务表
  10. Python新手学习基础之条件语句——if/else语句
  11. map,area标签
  12. POJ1469_COURSES(二部图最大匹配)
  13. VS2017 调试期间无法获取到变量值查看
  14. 微信小程序demo-环球小镇
  15. 导入大数据量sql时候超时的问题
  16. kafka消费者启动报错
  17. mysql 插入更新判断 ON DUPLICATE KEY UPDATE 和 REPLACE INTO
  18. Vue.set全局操作
  19. php 非递归实现分类树
  20. 用于主题检测的临时日志(0ece3f5c-d74f-449c-85a7-ed53fffb0e94 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

热门文章

  1. 窥探 Swift 之别具一格的 Struct 和 Class
  2. Ctags快速入门
  3. 转载:SPFA算法学习
  4. input标签添加上disable属性在移动端字体颜色不兼容的解决办法。
  5. 机器视觉 Histogram of oriented gradients
  6. python下setuptools安装
  7. Java之类加载器(Class Loader)
  8. 【Lintcode】137.Clone Graph
  9. django-crontab 定时执行任务方法
  10. mac下配置xampp的vhost