dfs · leetcode-22.かっこグループを生成しますか?

3622 ワード

問題面
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 };