卡特兰数的应用。
递推公式为:
h(n) = h(n - 1) * (4 * n - 1) / (n + 1).。
AC的代码:
#include <iostream>
using namespace std;
int data[102][100] = {0};
void deal()
{
int i, j, k = 0;
int temp[500];
data[0][0] = 0;
data[1][0] = 1;
data[2][0] = 2;
for(i = 3; i < 102; i++)
{
for(j = 0; j < 100; j++)
{
k += data[i - 1][j] * (4 * i - 2);
temp[j] = k % 10;
k /= 10;
}
for(j = 99; j >= 0; j--)
if(temp[j])
break;
int div = 0;
while(j >= 0)
{
div = div * 10 + temp[j];
temp[j] = div / (i + 1);
div %= (i + 1);
j--;
}
for(j = 0; j < 100; j++)
data[i][j] = temp[j];
}
}
int main()
{
deal();
int n;
while(cin >> n)
{
if(n == -1)
break;
int j;
for(j = 99; j >= 0; j--)
if(data[n][j])
break;
cout << data[n][j--];
while(j >= 0)
printf("%d", data[n][j--]);
cout << endl;
}
return 0;
}