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
ソースコード
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 };