22. Generate Parentheses
做题历程:
- 2016/Oct/23 本题做了不止1次,本次大概耗时6分钟,独立解出
就是基本的recursive dfs没啥好说的,直接上代码:
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
dfs(res, "", 0, 0, n);
return res;
}
private:
void dfs(vector<string>& res, string tmp, int left, int right, int n) {
if (left == n && right == n) {
res.push_back(tmp);
return;
}
if (left < n) {
dfs(res, tmp + "(", left + 1, right, n);
}
if (right < left) {
dfs(res, tmp + ")", left, right + 1, n);
}
}
};