题目
12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?
给定一个偶数n,请返回所求的排列方式个数。保证结果在int范围内。
测试样例:
1
返回:1
思路
卡特兰数。
代码
class HighAndShort:
def get_arrange(self, n, num):
count = 1
num1, num2 = 1, 1
while count <= num:
num1 *= n
n -= 1
num2 *= count
count += 1
return num1 // num2
def countWays(self, n):
# write code here
return self.get_arrange(n, n / 2) // (n / 2 + 1)