给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
class Solution {
public:
void backtrade(string sublist,vector<string>& res,int left,int right)
{
if(left == 0 && right == 0)
{
res.push_back(sublist);
return;
}
if(left > 0)
{
backtrade(sublist+"(",res,left-1,right);
}
if(left < right)
{
backtrade(sublist+")",res,left,right-1);
}
}
vector<string> generateParenthesis(int n) {
vector<string> res;
backtrade("",res,n,n);
return res;
}
};
本文介绍了一个使用回溯算法生成所有可能的有效括号组合的方法。当输入一个整数n时,该算法能生成所有长度为2n的有效括号字符串。通过递归地添加左括号和右括号,并确保任何时候右括号的数量不超过左括号的数量,从而保证了生成的括号序列的有效性。
613

被折叠的 条评论
为什么被折叠?



