Count the Trees。卡特兰数,对于n个数组成的二叉树结果是h(n)=c(2n,n)/(n+1),又有n个数是不相同的所以结果为h(n)*n!,化简得(2*n)*(2*n-1)!……*(n+2)
代码:
#include#include #include using namespace std; int a[101][301]; int b[301]; int main() { int i,j,x,temp,len,n; memset(a,0,sizeof(a)); a[0][0]=a[1][0]=1; for(i=3;i<101;i++) { memset(b,0,sizeof(b)); b[0]=1; for(int k=i+2;k<=i*2;k++) for(j=0,x=0;j<301;j++) { temp=k*b[j]+x; x=temp/10; b[j]=temp%10; } memcpy(a[i],b,301*sizeof(int)); } while(cin>>n,n) { if(n==1) { cout<<"1"< =0&&a[n][len]==0) len--; for(j=len;j>=0;j--) { cout<