/*
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
*/
vector<string> ans;
public:
vector<string> generateParenthesis(int n) {
backtracking(n, n, "");
return ans;
}
void backtracking(int l, int r, string a) {
if (l == 0 && r == 0) {
ans.emplace_back(a);
return;
}
if (l != 0) backtracking(l - 1, r, a + '(');
if (l < r) backtracking(l, r - 1, a + ')');
}