题解
这题很巧,虽然还是个dfs。用两个变量n,m记录待放入的左右括号,
放一个左则n-1,m+1,放一个右m-1,如此反复可得。
Code
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
dfs(res,"",n,0);
return res;
}
void dfs(vector<string> &v,string str, int n, int m){
if( n == 0 && m==0){
v.push_back(str);
return;
}
if(n>0) dfs(v,str+'(',n-1,m+1);
if(m>0) dfs(v,str+')',n,m-1);
}
};