回溯(递归)
class Solution {
vector<string> ans;
public:
vector<string> generateParenthesis(int n) {
string res;
getParenthesis(res, n, n);
return ans;
}
void getParenthesis(string res,int left, int right){
//cout << res << endl;
if(left == 0 && right == 0) {
ans.push_back(res);
}else if(left == right) {
getParenthesis(res + "(", left - 1, right);
}else if(left != 0 || right != 0) {
if(left != 0) {
getParenthesis(res + "(", left - 1, right);
}
if(right != 0){
getParenthesis(res + ")", left, right - 1);
}
}
}
};
题目链接:https://leetcode-cn.com/problems/generate-parentheses/