leetcode 22. Generate Parentheses 卡特兰数
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
给 n 对括号,生成其所有合法的组合。
class Solution {
public:
vector<string> v;
int n;
vector<string> generateParenthesis(int n){
int c = 2*n;
string s = "";
dfs(n, 0, s, 0, 0);
return v;
}
void dfs(int n, int len, string s, int l, int r){
if(len==2*n)v.push_back(s);
if(l<n)dfs(n, len+1, s+'(', l+1, r);
if(r<l)dfs(n, len+1, s+')', l, r+1);
}
};