力扣 22 括号生成 generate-parentheses
题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
有效括号组合需满足:左括号必须以正确的顺序闭合。
题解
class Solution {
public:
vector<string> ans;
vector<string> generateParenthesis(int n) {
string ss="";
dfs(ss,0,0,n);
return ans;
}
void dfs(string s,int zuo,int you,int n){
if((zuo==n)&&(you==n)){
ans.push_back(s);
return;
}
if(zuo<n){
string p = s;
p=p+"(";
dfs(p,zuo+1,you,n);
}
if((you<n)&&( zuo>you) ){
string p = s;
p=p+")";
dfs(p,zuo,you+1,n);
}
}
};
搜索找到就push到数组里。