估计是要按顺序输出吧
顺序就是先左后右。
#include <bits/stdc++.h>
using namespace std;
int n;
bool first = true;
const int N = 1000;
char a[N];
void print() {
for (int i = 1; i <= 2 * n; i++) cout << a[i];
}
void dfs(int l, int r) {
if (l == n && r == n) {
if (first) {
print();
first = false;
} else {
cout << ",";
print();
}
return;
}
if (l > n) return;
if (r > n) return;
if (r > l) return;
a[l+r+1] = '(';
dfs(l+1, r);
a[l+r+1] = ')';
dfs(l, r+1);
a[l+r+1] = '\0';
}
int main()
{
scanf("%d", &n);
dfs(0, 0);
cout << endl;
}