Question:
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
Solution:
Use the recursive method.
class Solution {
public:
void generate_recursively(int l, int r, string s, vector<string> &combination )
{
if (l > 0) generate_recursively(l - 1, r, s + '(', combination);
if (l < r) generate_recursively(l, r - 1, s + ')', combination);
if (r == 0) combination.push_back(s);
}
vector<string> generateParenthesis(int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
vector<string> combination;
generate_recursively(n, n, "", combination);
return combination;
}
};

本文介绍了一个使用递归方法生成所有有效的括号组合的算法。给定一个正整数 n,该算法可以生成所有可能的由 n 对括号组成的、闭合良好的括号字符串。文章详细解释了递归函数的工作原理,并提供了完整的 C++ 实现代码。
2068

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



