问题描述:设n是一个正整数。2n的标准二维表就是一个由正整数1到2n组成的2*nd的数组,该数组每行从左到右依次递增,每列从上到下依次递增,给出n,试求其所有的标准二维表的个数
算法思考:就是Catalan数,当然Catalan数的应用范围太广了
代码实现:
//标准二维表问题
#include <stdio.h>
#define N 1000
int jilu[N];
int catalan(int n)
{
if(jilu[n]!=0) return jilu[n];
int sum;
sum=catalan(n-1)*(4*n-2)/(n+1);
jilu[n]=sum;
return sum;
}
int main()
{
int n;
jilu[0]=1;
jilu[1]=1;
while(scanf("%d",&n),n)
printf("%d\n",catalan(n));
return 0;
}