题目
思路分析
采用DFS,使用一个l和一个r表示当前使用的左括号和右括号的数量,如果r>l,表示该匹配不合理,那么return,
代码
class Solution {
public:
void DFS(vector<string>& cnt, string& ans, int l, int r, int n){
if(l == n && r == n){
cnt.push_back(ans);
return;
}
if(l > n || r > n || r > l) return;
ans.push_back('(');
DFS(cnt, ans, l + 1, r, n);
ans.pop_back();
ans.push_back(')');
DFS(cnt, ans, l, r + 1, n);
ans.pop_back();
}
vector<string> generateParenthesis(int n) {
vector<string> cnt;
string ans = "";
DFS(cnt, ans, 0, 0, n);
return cnt;
}
};