题目
Given n pairs ofparentheses, write a function to generate all combinations of well-formedparentheses.
For example, given n= 3, a solution set is:
"((()))","(()())", "(())()", "()(())", "()()()"
保留1、已经处理的长度,2、需要处理的长度 3、未匹配的( 数, 4、已经出现过的( 数,5、处理好的字符串。
迭代:
一、如果1=2,保存5;
二、否则,如果4<n,处理1加一,2,3加一,4加一,5+=”(”;如果3>0,处理1加一,2,3减一,4,5+=”)”
代码:
class Solution {
vector<string> ans;
string s;
public:
void genPar(int deep,int n,int left,int totleft,string s)
{
if(deep==n)
ans.push_back(s);
else
{
if(totleft<n/2)
genPar(deep+1,n,left+1,totleft+1,s+"(");
if(left>0)
genPar(deep+1,n,left-1,totleft,s+")");
}
}
vector<string> generateParenthesis(int n) {
ans.clear();
s.clear();
genPar(0,n*2,0,0,s);
return ans;
}
};