先看2个问题:


问题一:

n个元素进栈(栈无穷大),进栈顺序为1,2,3,....n,那么有多少种出栈顺序?

先从简单的入手:
n=1,当然只有1种;
n=2,可以是1,2  也可以是2,1;那么有2种;
n=3,可以是1,2,3或1,3,2或2,1,3或2,3,1或3,2,1;一共5种;
容易联想到可能有一个通项公式可以求;
(扯一点,以前学栈的时候做过判断一个序列是否为合法的出栈顺序的题目,只要依次检查序列,对于一个元素i,在i后面出来的且序号比i小的肯定是从大到小出来的,比如 4 2 1 3,如果4都出来了,那么栈里从上到下只能是3 2 1)
通项公式的推导:
起先设F[i]表示i个元素进出栈(入栈的编号从小到大)的方案数;F[0]=1;F[1]=1;F[2]=2;F[3]=5; 
对于F[n];假设编号为1的元素先入栈,在出栈,那么剩下n-1个元素,方案数就是F[1]*F[n-1];
假设编号为1和2的元素入栈出栈,有F[2]种方案,剩下n-2个元素,根据乘法原理方案数就是F[2]*F[n-2];
......
1,2,3,......n-1先入栈出栈......
相加就是总方案数
但是带入发现不对:其实这样枚举会漏解,因为这样枚举元素n永远都是最后一个出栈;
思路二:
假设元素1第一个出栈,剩下n-1个; 方案数就是F[0]*F[n-1];
假设元素1第二个出栈,剩下n-2个;1前面的1个元素出栈有F[1]种方案,后n-2个有F[n-2]种,根据乘法原理 方案数就是F[1]*F[n-2];
假设元素1第三个出栈,剩下n-3个;1前面的2个元素出栈有F[2]种方案,后n-3个有F[n-3]种,根据乘法原理 方案数就是F[2]*F[n-3]; 
......
假设元素1第n个出栈......
相加就是总方案数;
公式的话就是F[n]=F[k-1]*F[n-k](1<=K<=n);


问题2:

n个1和n个0组成一个2n位的二进制数;要求从左到右的1的累计数不少于0的累计数,求方案数。

假设有一个2n位的二进制数,从左到右某一位开始不满足条件,那么这一位前面的1和0一样多,所以这一位必定是奇数位。
设第2k+1位开始不满足条件,那么第2k+1位是0;前面2k+1位有k个1和k+1个0,剩下后面的(2n-2k-1)位有n-k个1和
n-k-1个0;如果把后面的(2n-2k-1)位中的n-k个1换成0,把n-k-1个0换成1;那么这个二进制数就变成了由n+1个0和n-1个1组成的二进制数;因此可知任意一个不符合要求的数都可以转化成一个由n+1个0和n-1个1组成的二进制数;
同理反过来 任意一个由n+1个0和n-1个1组成的二进制数都可以转化成一个不符合要求的数;证明:由于0比1多2个,必定在从某一个偶数位开始,0的个数比1多2个;同理把后面部分的01互换,就变成一个由n+1个0和n-1个1组成的二进制数;
所以总方案就等于 n个1和n个0组成一个2n位的二进制数的个数减去由n+1个0和n-1个1组成的二进制数的个数;
F[n]=C(2n,n)-C(2n,n-1)=C(2n,n)/(n+1);

由问题二 再来看 问题一:进栈的累计次数必定不少于出栈的累计次数,故
 F[n]=C(2n,n)-C(2n,n-1)=C(2n,n)/(n+1);
也等于 F[k-1]*F[n-k](1<=K<=n)。这就是Catalan数(数学家Catalan在研究乘法结合律的时候提出,即求一个式子a1*a2*a3*a4*a5*......an一共有多少种添加括号的方法);


总结:像这种某两个元素的总个数相等,但其中一个的累计数不小于另一个的题目都可以用Catalan数的公式来解决; 
 
相关练习:
1.2n个人排成一行买票,n个人只有10元整,n个人只有5元整,票价5元一张,问有多少种排队的方法,使得只要有带着10元的人买票,就有零钱可以找给他;
2.过河卒改编版,(图不好画,,结合过河卒的图吧)就是从左到右,n行n列,第一列只有从下到上1个 格子,第2列从下到上有2个,第n列有n个格子,从最左下角走到最右上角有多少种方案;

Catalan数的更多相关文章

  1. Catalan数应用整理

    应用一: codevs 3112 二叉树计数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description 一个有n个结点的二叉树总共有 ...

  2. 【64测试20161112】【Catalan数】【数论】【扩展欧几里得】【逆】

    Problem: n个人(偶数)排队,排两行,每一行的身高依次递增,且第二行的人的身高大于对应的第一行的人,问有多少种方案.mod 1e9+9 Solution: 这道题由1,2,5,14 应该想到C ...

  3. Catalan数(数论)

    Catalan数 [参考网址]http://www.cnblogs.com/gongxijun/p/3232682.html 记得当时我们队写过一个,差点超时,现在找到了公式,感觉还是挺简单的. 还要 ...

  4. Catalan数 && 【NOIP2003】出栈序列统计

    令h(1)=1, h(0)=1,catalan数满足递归式: h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)h(0) (n>=2) =C(2n, n)/(n+1) ...

  5. catalan数及笔试面试里那些相关的问题(转)

    一.catalan数由来和性质 1)由来 catalan数(卡塔兰数)取自组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项 ...

  6. Catalan数推导(转载)

    Raney引理: 设整数序列A = {Ai, i=1, 2, …, N},且部分和Sk=A1+…+Ak,序列中所有的数字的和SN=1,在A的N个循环表示中,有且仅有一个序列B,满足B的任意部分和Si均 ...

  7. HDU 4828 - Grids (Catalan数)

    题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=4828 Catalan数的公式为 C[n+1] = C[n] * (4 * n + 2) / (n ...

  8. 卡特兰数 Catalan数 ( ACM 数论 组合 )

    卡特兰数 Catalan数 ( ACM 数论 组合 ) Posted on 2010-08-07 21:51 MiYu 阅读(13170) 评论(1)  编辑 收藏 引用 所属分类: ACM ( 数论 ...

  9. 12个高矮不同的人,排成两排(catalan数)

    问题描述: 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 这个笔试题,很YD,因为把某个递归关系隐藏得很深. 问题分析: 我们先把这12个 ...

随机推荐

  1. EF中使用SQL语句或存储过程(小笔记)

    1.无参数查询 var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToLis ...

  2. uploadify多图片上传实例

    upload.php <html> <head> <meta http-equiv="Content-Type" content="text ...

  3. HTML5 学习笔记--------》HTML5概要与新增标签!

      一.HTML5概要 1.1.为什么需要HTML5 HTML4陈旧不能满足日益发展的互联网需要,特别是移动互联网.为了增强浏览器功能Flash被广泛使用,但安全与稳定堪忧,不适合在移动端使用(耗电. ...

  4. 使用fragment兼容低版本的写法

      [1]定义fragment继承V4包中的Fragment    [2]定义的activity要继承v4包中的FragmentActivity   [3]通过这个方法getSupportFragme ...

  5. JavaWeb 5 Tomcat

    5 Tomcat 1 Web开发入门            1.1 引入                之前的程序: java桌面程序,控制台控制,socket gui界面.javase规范      ...

  6. 在Windows和Linux上安装paramiko模块

    一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...

  7. python操作mongodb之八地理索引空间数据

    from pymongo import MongoClient, GEO2D #使用geo_example库 db = MongoClient('192.168.30.252',27017).geo_ ...

  8. 通过yum安装nginx-mysql-php-fastcgi配置LNMP

    最近指想服务器跑静态文件,所以想单独配置个nginx的webserver,然而并不是我想象的那么简单,使用rpm包来安装会发生很多软件依赖的错误: 当我尝试使用yum安装nginx的时候,总是提示未找 ...

  9. 抛弃vboot不格盘用grub4dos+firadisk安装Ghost版XP到VHD,轻松RAMOS!

    http://bbs.wuyou.net/forum.php?mod=viewthread&tid=363198&extra=抛弃vboot不格盘用grub4dos+firadisk安 ...

  10. Unity5中叹为观止的实时GI效果

    http://www.manew.com/thread-43970-1-1.html 今天为大家分享unity与Alex Lovett共同使用unity5制作的Shrine Arch-viz Demo ...