例题 3.13

题目

一个合法的表达式由()包围,()可以嵌套和连接,如(())()也是合法表达式;现在有 6 对(),它们可以组成的合法表达式的个数为 132

解决

主要思路:这是一个卡特兰数列,我们可以把左括号看做1,右括号看做0,这些括号的组合就是01的排列,这里需要满足从第一个数开始的任意连续子序列中,0的个数不多于1的个数,也就是右括号的个数不多于左括号的个数。

共有几种情况?

2n个位置,从中选n个位置放左括号,其他的放右括号,共有 Cn2n 种情况。

不合法的有几种?

在任何不符合条件的序列中,找出使得0的个数超过1的个数的第一个0的位置,然后在导致并包括这个0的部分序列中,以1代替所有的0并以0代表所有的1。结果总的序列变成一个有(n+1)个1和(n-1)个0的序列。而且这个过程是可逆的,也就是说任何一个有(n+1)个1和(n-1)个0构成的序列都能反推出一个不符合条件的序列,所以不符合条件的序列个数为 Cn12n

所以,合法的排列数有

Cn2nCn12n=Cn2nn+1

本文参考的来源博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值