题面
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses
给定int n,代表n组括号,编码生成所有有效的括号组合(即符合括号嵌套规则)
样例
given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
思路
dfs
源码
1 class Solution { 2 public: 3 vector<string> generateParenthesis(int n) { 4 vector<string> res; 5 dfs("", 0, 0, res, n); 6 return res; 7 } 8 //dfs深搜 9 void dfs(string tmp, int l, int r, vector<string> &res, int n) 10 { 11 if(l == n && r == n) 12 { 13 res.push_back(tmp); 14 return ; 15 } 16 if(l < n) 17 dfs(tmp+"(", l+1, r, res, n); 18 if(l > r) 19 dfs(tmp+")", l, r+1, res, n); 20 } 21 };