Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
class Solution {
public:
vector<string> generateParenthesis(int n) {
std::vector<std::string> result;
generate("", n, n, result);
return result;
}
private:
void generate(std::string item, int left, int right, std::vector<std::string> &result)
{
if(left==0&&right==0)
{
result.push_back(item);
return;
}
if(left>0)
{
generate(item+'(', left-1, right, result);
}
if(left<right)
{
generate(item+')', left, right-1, result);
}
}
};
本文介绍了一个使用递归方法生成所有合法括号组合的C++算法。对于给定的整数n,该算法能够生成所有可能的由n对括号组成的合法字符串组合。通过递归地添加左括号和右括号,并确保任何时候右括号的数量不超过左括号的数量来实现。
271

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



