卡特兰数,将台阶分解
#include<iostream>
#include<stdio.h>
using namespace std;
int f[550][500];//f[i][j]±íʾµÚi¸öÊýµÄµÚjλ¡£
int len=1;
void add(int u)
{
for(int i=1;i<=len;i++)
f[u][i]=f[u-1][i]+f[u][i];
for(int i=1;i<=len;i++)
{
f[u][i+1]+=f[u][i]/10;
f[u][i]%=10;
}
if(f[u][len+1])len++;
}
int main()
{
int n,p;
cin>>n;
f[1][1]=1;
for(int i=2;i<=n+1;i++)
for(int j=1;j<=i;j++)
add(j);
for(int i=len;i>0;i--)
cout<<f[n][i];
}