Problem:
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
Analysis:
Solutions:
C++:
void Generate_Aux(int left, int right, string seq, vector<string>& col_seq)
{
for(int i = left; i > 0;) {
seq.push_back('(');
--i;
string seq_backup(seq);
for(int j = right; j > i;) {
seq.push_back(')');
--j;
if(!i && !j)
col_seq.push_back(seq);
else
Generate_Aux(i, j, seq, col_seq);
}
seq = seq_backup;
}
}
vector<string> generateParenthesis(int n) {
vector<string> col_seq;
string seq;
Generate_Aux(n, n, seq, col_seq);
return col_seq;
}Java:
Python:
本文介绍了一个生成有效括号组合的算法。给定一个正整数 n,该算法能生成所有可能的有效括号字符串。例如当 n = 3 时,会生成五种不同的有效括号组合:((()))、(()())、(())()、()(()) 和 ()()()。文章提供了 C++ 的实现代码。

362

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



