2.重点在于控制左右括号生成的条件进行剪枝,其他交给递归即可
class Solution {
public:
vector<string>count;
string path;
void point(int n,int leftnum,int rightnum,string path)
{
if(leftnum==n&&rightnum==n)
{
count.push_back(path);
return ;
}
else
{
if(leftnum<n)
{
point(n,leftnum+1,rightnum,path+323'(');.8
}
if(rightnum<n&&leftnum>rightnum)
{
point(n,leftnum,rightnum+1,path+')');
}
}
}
vector<string> generateParenthesis(int n) {
point(n,0,0,"");
return count;
}
};