卡特兰数
应用有:
括号化 出栈次序 凸多边形三角划分 给定节点组成二叉搜索树 n对括号正确匹配数目等
前几项数字分别是1,1,2,5,14,42,139...(f[0]=f[1]=1 f[2]=2)
公式:
f[n]=f[0]*f[n-1]+f[1]*f[n-2]+...f[n-1]*f[0]
例题洛谷P1044
#include <iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<queue>
#include<stack>
#include<cstring>
using namespace std;
long long a[25];
int n;
int main(){
a[1]=1;
a[0]=1;
cin>>n;
for(int i=2;i<=n;i++){
for(int j=0;j<i;j++){
a[i]+=a[j]*a[i-j-1];
}
}
cout<<a[n];
return 0;
}
// freopen("testdata.in", "r", stdin);

浙公网安备 33010602011771号