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,返回n对括号的所有可能组合。
dfs一下
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> ans;
solve(ans, "", n, n);
return ans;
}
void solve(vector<string>& ans, string s, int n, int m) {
if (n < 0 || m < 0 || m < n) return;
if (n == 0 && m == 0) {
ans.push_back(s);
return;
}
solve(ans, s + "(", n-1, m);
solve(ans, s + ")", n, m-1);
}
};