这个求卡特兰数我还是很晕 ,真菜鸟。不过 把参考的这个精简的代码拿过来留着吧。哎!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[120][122];
int b[130];
int i,j,k,n;
//求出前100个卡特兰数的模板
void catalan()
{
int tem,len;
a[1][0]=1;
a[1][1]=1;
a[2][0]=1;
a[2][1]=2;
len=1;
for(i=3;i<=100;i++)
{
tem=0;
for(j=1;j<=len;j++)
{
k=a[i-1][j]*(4*i-2)+tem;
tem=k/10;
a[i][j]=k%10;
}
while(tem)
{
len++;
a[i][len]=tem%10;
tem=tem/10;
}
for(j=len;j>=1;j--)
{
k=a[i][j]+tem*10;
a[i][j]=k/(i+1);
tem=k%(i+1);
}
while(!a[i][len])
{
len--;
}
a[i][0]=len;
}
}
int main()
{
catalan();
while(scanf("%d",&n)!=EOF)
{
for(i=a[n][0];i>=1;i--) //求出n的卡特兰数
{
printf("%d",a[n][i]);
}
printf("\n");
}
return 0;
}