原题链接:
https://www.acwing.com/problem/content/3694/
题目:
求N个结点能够组成的二叉树的个数。
N个数依次入栈,出栈顺序的种类数。
例:
输入:3
输出:5
卡特兰数:
https://www.cnblogs.com/zyt1253679098/p/9190217.html
#include<bits/stdc++.h>
using namespace std;
int func(int n)//计算n的阶乘
{
int ans=1;
for(int i=n;i>=1;i--){
ans*=i;
}
return ans;
}
int catl(int n)//卡特兰数
{
int son=1,mum=1;
for(int i=2*n;i>n;i--)
son*=i;
for(int i=n;i>=1;i--)
mum*=i;
return son / ( mum * (n+1) );
}
int main()
{
int n; cin>>n;
cout<<catl(n);
return 0;
}
#python
def catl(n):
#python range(起点,终点-1):
son=1
mum=1
for i in range(n+1,2*n+1):
son*=i
for i in range(1,n+1):
mum*=i
ans=son/(mum*(n+1))
return ans
n=int(input())
print(catl(n))