http://oj.leetcode.com/problems/generate-parentheses/
// Interesting questions
// It is very easy to generate duplicated result with normal dp
// The core idea is that from the start to the end of the string,
// we need to keep the property that cnt("(") is more than or equal to cnt(")")
class Solution {
public:
void Generate(int left, int right, string current, vector<string> &res){
if(left==0&&right==0) res.push_back(current);
if(left>0) Generate(left-1,right,current+"(",res);
if(right>left) Generate(left,right-1,current+")",res);
}
vector<string> generateParenthesis(int n) {
vector<string> res;
Generate(n,n,"",res);
return res;
}
};
本文介绍了一种生成有效括号组合的算法。该算法通过递归方式生成所有可能的括号序列,并确保任何时候左括号数量不少于右括号数量,以此避免无效序列。通过这种方法,可以高效地生成所有长度为2n的有效括号序列。
144

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



