2 3 -1
2 5
#include<stdio.h>
#include<string.h>
const int maxn=200;
int catalan[101][200];
int temp[200];
void make(){
memset(catalan,0,sizeof(catalan));
catalan[1][0]=1;
int i,j,res;
for(i=2;i<=100;++i){
int mod=4*i-2;
for(j=0;j<maxn;++j){
catalan[i][j]+=catalan[i-1][j]*mod;
if(catalan[i][j]>=10){
catalan[i][j+1]=catalan[i][j]/10;
catalan[i][j]%=10;
}
}
memset(temp,0,sizeof(temp));
mod=i+1;
res=0;
for(j=maxn-1;j>=0;--j){
temp[j]=(res*10+catalan[i][j])/mod;
res=(res*10+catalan[i][j])%mod;
}
for(j=0;j<maxn;++j){
catalan[i][j]=temp[j];
}
}
}
int main(){
make();
int n;
while(~scanf("%d",&n),n!=-1){
int i=maxn-1;
while(!catalan[n][i]) --i;
while(i>=0){
printf("%d",catalan[n][i--]);
}
printf("\n");
}
return 0;
}版权声明:本文为博主原创文章,未经博主允许不得转载。
hdoj-1134-Game of Connections【卡特兰数】
原文:http://blog.csdn.net/qq_18062811/article/details/47343403