现在的位置: 首页 > 综合 > 正文

80 阿里巴巴一道笔试题 排列方式有多少种

2018年05月02日 ⁄ 综合 ⁄ 共 599字 ⁄ 字号 评论关闭

80.阿里巴巴一道笔试题 
问题描述:
12  个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人
高,问排列方式有多少种?
这个笔试题,很 YD,因为把某个递归关系隐藏得很深。

/*
80.阿里巴巴一道笔试题 
问题描述:
12  个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人
高,问排列方式有多少种?

刚开始没看出来 后来发现了 卡特兰数
引用别人的问题分析:

	我们先把这12个人从低到高排列,然后,选择6个人排在第一排,那么剩下的6个肯定是在第二排.
用0表示对应的人在第一排,用1表示对应的人在第二排,那么含有6个0,6个1的序列,就对应一种方案.
比如000000111111就对应着
	第一排:0 1 2 3 4 5
	第二排:6 7 8 9 10 11
010101010101就对应着
	第一排:0 2 4 6 8 10
	第二排:1 3 5 7 9 11
问题转换为,这样的满足条件的01序列有多少个。

求,0的个数大于1的个数。
如果把0看成入栈操作,1看成出栈操作,就是说给定6个元素,合法的入栈出栈序列有多少个。
这就是catalan数,这里只是用于栈,
等价地描述还有,二叉树的枚举、多边形分成三角形的个数、圆括弧插入公式中的方法数,
其通项是c(2n, n)/(n+1)。 
c(2n, n)/(n+1)=c(2n,n)-c(2n,n-1)
c(12, 6)/7 = 12*11*10*9*8*7/(7*6*5*4*3*2) = 132
*/

抱歉!评论已关闭.