题目:
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
采用递归搜索,满足条件时进vector
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> result;
generate(n, 0, 0, "", result);
return result;
}
private:
void generate(int n, int left, int right, string s, vector<string> &ans) {
//剪枝
if(left > n)
return;
if(right > left)
return;
if(left + right == 2*n && left == right) {
ans.push_back(s);
return;
}
generate(n, left+1, right, s+"(", ans);
generate(n, left, right+1, s+")", ans);
}
};
本文介绍了一个使用递归搜索算法来生成所有合法的n对括号组合的方法。通过递归地添加左括号和右括号,并利用剪枝避免无效状态,最终收集所有合法的括号字符串。
2047

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



