题目
思路
除了开头必须是左括号(,其他的位置可以是两种括号,但是必须满足合理性:任意位置)的总和不大于(的总和,按照这个思路写即可。
代码
class Solution {
public:
vector<string> v;
string s;
void get_parentheses(int m,int n,int N){
if(m==N&&n==N){
v.push_back(s);
//cout<<s<<endl;
return;
}
if(m<N){
s=s+'(';
get_parentheses(m+1,n,N);
s=s.substr(0,s.length()-1);
}
if(n<N&&n<m){
s=s+')';
get_parentheses(m,n+1,N);
s=s.substr(0,s.length()-1);
}
return;
}
vector<string> generateParenthesis(int n) {
s=s+'(';
get_parentheses(1,0,n);
return v;
}
};