leetcode22 括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
难度 中等
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
代码:
DFS,剪支条件 右边括号的数量大于左边括号的数量
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> result;
get(result,"",0,0,n);
return result;
}
void get(vector<string> &result,string tmp,int left,int right,int n){
if(left==n&&right==n){
result.push_back(tmp);
}
if(left>n||right>n||right>left){
return;
}
else{
get(result,tmp+"(",left+1,right,n);
get(result,tmp+")",left,right+1,n);
}
}
};