dfs(二十五)22. 括号生成
22. 括号生成
数字
n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:
输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:
输入:n = 1 输出:["()"]提示:
1 <= n <= 8
使用左右俩个全局变量也可以传参数作为括号是否合法的匹配标准
class Solution {
public:
int left, right, n;
string path;
vector<string> res;
vector<string> generateParenthesis(int _n)
{
n = _n;
dfs();
return res;
}
void dfs()
{
if(right == n)
{
res.push_back(path);
return;
}
if(left < n) // 添加左括号
{
path.push_back('(');left++;
dfs();
path.pop_back();left--;
}
if(right < left) // 添加右括号
{
path.push_back(')');right++;
dfs();
path.pop_back();right--;
}
}
};