链接:
题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
代码
递归实现排列组合
class Solution {
int left;
int right;
vector<string> ans;
string tmp;
void func(int n){
if(left == n && right == n){
ans.push_back(tmp);
return;
}
if(left < n){
++left;
tmp.push_back('(');
func(n);
tmp.pop_back();
--left;
}
if(right < left){
++right;
tmp.push_back(')');
func(n);
tmp.pop_back();
--right;
}
}
public:
vector<string> generateParenthesis(int n) {
left = 1;
tmp = "(";
right = 0;
func(n);
return ans;
}
};