思路
一道递推题(或者说有点DP的感觉)。
看网上有人说是卡特兰数,不过对那个不是很熟悉,也就没有用。
代码
#include <cstdio>
using namespace std;
typedef long long LL;
LL sta[40][40];
int main()
{
sta[0][0] = 1;
for(int i=1; i<=35; i++)
{
for(int j=0; j<=i; j++)
{
// 状态转移
if(j==0) sta[i][j] = sta[i-1][j];
else if(j==i) sta[i][j] = sta[i][j-1];
else sta[i][j] = (sta[i-1][j]+sta[i][j-1]);
}
}
int num, tt=1;
while(scanf("%d", &num) && num!=-1)
{
printf("%d %d %I64d\n", tt++, num, sta[num][num]*2);
}
return 0;
}