题意:写出所有合法的括号组合。
思路:DFS。
class Solution {
public:
vector<string> re;
vector<string> generateParenthesis(int n) {
string s = "";
dfs(s, n, n);
return re;
}
int dfs(string s, int l, int r) {
if(r == 0 && l == 0) {
re.push_back(s);
return 0;
}
char c = s[s.length() - 1];
if(l < r) {
if(l > 0) dfs(s + '(', l - 1, r);
if(r > 0) dfs(s + ')', l, r - 1);
return 0;
}
else {
if(l > 0) dfs(s + '(', l - 1, r);
return 0;
}
}
};