学习卡特兰数时,有个例题是:一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?对于每一个数来说,必须进栈一次、出栈一次。我们把进栈设为状态‘1’,出栈设为状态‘0’。n个数的所有状态对应n个1和n个0组成的2n位二进制数。由于等待入栈的操作数按照1‥n的顺序排列、入栈的操作数b大于等于出栈的操作数a(a≤b),因此输出序列的总数目=由左而右扫描由n个1和n个0组成的2n位二进制数,1的累计数不小于0的累计数的方案种数。
其中有一个类似的题目:有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)
映射在坐标系中,我们可以这样理解:把1看作向上走一步,0看作向右走一步,那么就可以转化为从(0,0)到(n,n),每次只能向上或向右走一格,且不能走到y=x的下方,求总的方法数?不能走到y=x的下方,也就是一定要在y=x-1的上方,那么结果就是没限制条件C(2n)n-路径与y=x-1相交的方法数,同时(0,0)与关于y=x-1的对称点(1,-1)与y=x-1的方法数相同。。。。所以答案是C(2n)n-C(2n)(n+1).