回溯
void gen(vector<string>& ans,int nums,string& str,int& n) {
if (str.size() == 2*n) {
ans.push_back(str);
}
else {
if (nums < n) {
str.push_back('(');
gen(ans, nums + 1, str, n);
str.pop_back();
}
if (2 * nums > str.size()) {
str.push_back(')');
gen(ans, nums, str, n);
str.pop_back();
}
}
}
vector<string> generateParenthesis(int n) {
vector<string> ans;
string str = "";
gen(ans, 0, str, n);
return ans;
}