#include
using namespace std;
int cnt = 0, n;
void DFS(int index, int p) {
if (index == 2 * n && p == 0) {
cnt++;
return;
}
if (p < 0) return;
DFS(index + 1, p + 1);
DFS(index + 1, p - 1);
}
int main()
{
scanf("%d", &n);
DFS(0, 0);
printf("%d\n", cnt);
return 0;
}
估计递归到堆栈用爆了吧。你这 if (index == 2 * n && p == 0)啥时候能满足啊,DFS(index + 1, p + 1);会一直由DFS(0,0)、DFS(1,1)、DFS(2,2)往下递归啊