版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37895339/article/details/79769640
公式一
C2nn−C2nn+1=n+1C2nn
题目一
假设有n对左右括号,请求出合法的排列有多少个?合法是指每一个括号都可以找到与之配对的括号,比如n=1时,()是合法的,)(不合法。
分析:n对括号的排列共有
C2nn种,错误的排列共有
C2nn+1或
C2nn−1种。最终结果为
C2nn−C2nn+1=n+1C2nn
题目二
n个数进出栈的顺序有多少种?
分析:出栈的时候栈里必须有数,因此与题目一相同。
C2nn−C2nn+1=n+1C2nn
题目三
2n个人排队买票,n个人拿5元钱,n个人拿10元钱,票价是5元一张,每个人买一张票,售票员手中没有零钱,问有多少种排队方法让售票员可以顺利卖票?
分析:卖票的过程中必须要有5元在,因此5元可以看成左括号,10元看成右括号,与题目一相同。
公式二
f(n)=f(0)∗f(n−1)+f(1)∗f(n−2)+f(2)∗f(n−3)+…+f(n−1)∗f(0)=n+1C2nn
题目四
求n个无差别的节点构成的二叉树有多少种不同的结构。
分析:假设n个无差别的节点构成的不同结构树为
f(n)
f(0)表示空树,所以规定只有1种结构。
将n个节点排成一排,如果把第1个节点当做头剩余节点就是右子树那么共有
f(0)f(n−1)种排列。
如果把第2个节点当做头,第1个节点为左子树,第3个节点及以后为右子树,那么共有
f(1)f(n−2)中排列,以此类推,直到
f(n−1)f(0)。
假设
f(0)=1,f(1)=1,f(2)=2,f(3)=5时
f(n)=f(0)∗f(n−1)+f(1)∗f(n−2)+f(2)∗f(n−3)+…+f(n−1)∗f(0)=n+1C2nn
题目五
12个高矮不同的人,拍成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人要高,问排列方式有多少种?
分析:假设第一排的人编号为0,第二排的人编号为1。
如果为000011010111,则前4个人在第一排,第5,6个人在第二排,第7个人在第一排,第8个人在第二排,第9个人在第一排,第10,11,12人在第二排。
如果有前缀1比0多的话,说明必然会出现不合法的情况。题目变为任意前缀不能出现1比0多的情况,所以与题目一相同。