先看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. 在Android中查看和管理sqlite数据库

    在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看.android项目中的sqlite数据库位于/data/data/项目包/databas ...

  2. iOS 开发之 Xcode6 installation failed invalid argument!

    1.运行模拟器的时候 报出: installation failed invalid argument! 原因分析: 我把Bundle indentifier 置为空了! http://stackov ...

  3. HashMap遍历

    package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...

  4. Winform_播放声音文件

    1.调用非托管的dll using System.Runtime.InteropServices;  //DllImport命名空间的引用 class test  //提示音 { [DllImport ...

  5. hiho_1050_树中的最长路

    题目大意 给出一棵树,其中每两个节点都可以形成一个路径(要求路径中的边只能走一次),求出所有路径中的长度最大值. 分析 树形结构,很容易想到递归,但为了节省时间,要考虑保存中间状态.于是,考虑使用记忆 ...

  6. 启动eclipse说在sdk目录下的platforma-tools下面找不到adb.exe

      adb是什么?adb有什么用?adb工具如何用? 是用来管理模拟器和真机的通用调试工具,该工具功能强大,直接打开cmd即可使用adb命令,adb的全称为Android Debug Bridge,是 ...

  7. webdriver hangs when get or click

    Same times the webdriver hangs when get url or click some link,  webdriver executing (get or click) ...

  8. ios 企业证书 ipa 重新签名发布

    提示:暂时不能用了,企业证书滥用 ios 企业证书 ipa 重新签名发布 1. 应用场景 当前有一个 未用企业证书签名的 ipa 文件,默认是不可以直接安装到设备上的:我们需要用企业版证书签名: 当前 ...

  9. astyle 使用说明

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址 ...

  10. text-overflow:ellipsis实现超出隐藏时省略号显示

    text-overflow:ellipsis;要达到的效果是:文字超出容器宽度时,文字被隐藏的文字用省略号代替.所以该属性只能用于块状元素或行内块元素中,对行内元素是不起作用的. 一般和white-s ...