n对括号的匹配方式以及Catalan数通项公式的推导

4对括号有多少种可能的合法匹配方式?n对括号呢?

(也可以用深搜+剪枝,剪枝条件是右括号数目必须小于左括号数目)
此题是卡特兰数的一个通常应用,相似的还有出栈顺序等。关于卡特兰数的具体内容,请参阅百度百科或Wiki.
 
网络上可以搜到很多相关的题目和解答,但是鲜有易懂的推导过程。这里记录一种推导过程如下:
 
结论:对于n对括号,合法的排列共有C(n,2n) - C(n+1,2n)种.
分析:
1.考虑n对括号,共有n个 ( 和n个)。
对于其全排列,可以看做是2n个空,将n个 ( 放入其中任意n个空中, 剩余的位置由 ) 填充,显然其全排列的个数为
 C(n,2n)
2.在全排列中,包含一部分非法的排列,我们从中减去非法的排列个数,即可得到合法的排列数目。问题规模被缩小。考虑所有排列中,非法排列的个数。
3.先来观察非法排列的特性,我们假设(为1,)为-1,对于任意一个非法排列a1,a2 ... an ,比存在一个k,使得
           a1+a2+a3..ak<0
   因为如果这个和小于0,说明到k位置-1出现的次数比1多,即右括号出现的次数比左括号多,即该组合是非法的。
4. 对于一个非法排列,必存在一个k,使得a1+a2+a3..ak<0,给出一个n=3时具体的排列:
           1, -1, 1, -1,-1, 1
   在k=5时,出现了非法情况。
   我们将1~5元素翻转,即1和-1置换,那么该序列就变成了
           -1, 1, -1, 1, 1, 1
   这个翻转的序列中,有n+1个1,n-1个-1
   我们再观察这个翻转后的序列,对于有n+1个1,n-1个-1的排列,共有C(n+1,2n)种。而对于这种非法的排列:
 总是存在一个最小的k,我们只需要从第1个到第k个元素翻转回去,就能变成对于有n个1,n个-1的情况下的非法排列。同样,每一个n个1,n个-1的情况下的非法排列也会对应一个n+1个1,n-1个-1的排列。
 
   例如:
        1, 1, 1, 1, -1, -1 --->从k=1翻转 -1,1,1,1,-1,-1 
        -1, 1, 1, 1, 1, -1 --->从k=2翻转 1,-1,-1,1,1,-1
(这里不是很容易理解,需要自己画图分析)
5.所以可以推得,非法排列的个数为C(n+1,2n),
6.最终可得结论:对于n对括号,合法的排列共有C(n,2n) - C(n+1,2n)种.


下面是一些大公司的笔试题()

先来一道阿里巴巴的笔试题目:说16个人按顺序去买烧饼,其中8个人每人身上只有一张5块钱,另外8个人每人身上只有一张10块钱。烧饼5块一个,开始时烧饼店老板身上没有钱。16个顾客互相不通气,每人只买一个。问这16个人共有多少种排列方法能避免找不开钱的情况出现。

C8=1430,所以总数=1430*8!*8!(3个人的排列为3种,即3!,区别与括号的题目,因为括号只分为左括号和右括号)

2012腾讯实习招聘笔试题

在图书馆一共6个人在排队,3个还《面试宝典》一书,3个在借《面试宝典》一书,图书馆此时没有了面试宝典了,求他们排队的总数?

C3=5;所以总数为5*3!*3!=180.


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值