22.括号生成
思路:就普通的dfs。u代表的是还剩的字符数量,ct代表的是目前左括号的数量。只有左括号的数量大于0的时候,才可以加入右括号。并且最终u==0时,还需要判断此时的ct是否为0,为0才是匹配成功,不然就是左括号的数量多了。
class Solution {
public:
vector<string> v;
void dfs(int u ,int ct,string s){
if(u==0){
if(ct==0){
v.push_back(s);
}
return ;
}
dfs(u-1,ct+1,s+"(");
if(ct!=0)
dfs(u-1,ct-1,s+")");
}
vector<string> generateParenthesis(int n) {
dfs(2*n,0,"");
return v;
}
};