题目描述:
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Example:
Given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
题目大意:给出n,生成所有包含n对括号的合法的括号串。
思路:模拟二叉树遍历,当左括号有剩余,添加左括号,当右括号数大于左括号,添加右括号。
c++代码:
class Solution {
public:
vector<string> generateParenthesis(int n) {
dfs("", n, n);
return ans;
}
void dfs(string str, int left, int right)
{
if (left == 0 && right == 0)
{
ans.push_back(str);
return;
}
if (left > 0)
dfs(str + "(", left - 1, right);
if (left < right)
dfs(str + ")", left, right - 1);
}
private:
vector<string> ans;
};