leetcode generate parentheses

DFS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class  {
public:
void dfs(vector<string> &res, string v, int n, int left, int right) {
if(n == left) {
v.append(n - right, ')');
res.push_back(v);
return;
}
dfs(res, v + '(', n, left + 1, right);
if(left > right) dfs(res, v + ')', n, left, right + 1);
}
vector<string> generateParenthesis(int n) {
vector<string> res;
if(n > 0) dfs(res, "", n, 0, 0);
return res;
}
};