卡特兰数
思路
//初始化:当进栈的个数为0,1 时 方法为1;
//n个数 当x为最后一个出栈 前面有f[x-1]种方法 后面有f[n-x]种
//方案数:f[x-1]*f[n-x]
//每个数都可能最后一个出去。
//所以方案数为每种情况的和。
源码
#include<bits/stdc++.h>
using namespace std;
//初始化:当进栈的个数为0,1 时 方法为1;
//n个数 当x为最后一个出栈 前面有f[x-1]种方法 后面有f[n-x]种
//方案数:f[x-1]*f[n-x]
//每个数都可能最后一个出去。
int n,h[20]={1,1};
int main(){
cin>>n;
for(int i=2;i<=n;i++){
for(int j=0;j<i;j++){
h[i]+=h[j]*h[i-j-1];
}
}
printf("%d",h[n]);
return 0;
}