生成括号
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:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
方法解析:跟上道题目一样,使用的是回溯法
终止条件:括号数量 等于 2*n
递归参数:当open左括号小于n,追加左括号,左括号数量+1
当close右括号小于open,追加右括号,右括号数量+1;
class Solution {
public:
vector<string> res;
void backtrace(string s,int open,int close,int max)
{
if(s.length() == max*2)
{
res.push_back(s);
return;
}
if(open < max)
{
backtrace(s+"(",open+1,close,max);
}
if(close < open)
{
backtrace(s+")",open,close+1,max);
}
}
vector<string> generateParenthesis(int n) {
if(n ==0) return res;
backtrace("",0,0,n);
return res;
}
};