码迷,mamicode.com
首页 > 其他好文 > 详细

Generate Parentheses

时间:2014-09-02 10:26:54      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   for   div   cti   

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:

"((()))", "(()())", "(())()", "()(())", "()()()"

 

使用深度搜索,对于每个位置我们都可以放"(", ")",但是要符合正确的括号形式,那么在任何深搜的时候都要符合左括号的数目要小于等于右括号的数目,即优先保证  在左括号数==右括号数的情况下,先放左括号,代码如下:

 

 1 class Solution {
 2 public:
 3     vector<string> generateParenthesis(int n) {
 4         ans.clear();
 5         string str;
 6         dfs(str, n, n);
 7         return ans;
 8     }
 9     
10     void dfs(string& tstr, int leftnum, int rightnum) {
11         if( leftnum > rightnum ) return ;   //保证左括号数==右括号数的情况下,优先放左括号
12         if( leftnum == 0 && rightnum == 0 ) {   //当左括号和右括号剩余数均为0的情况下,那么这是个符合要求的括号集
13             ans.push_back(tstr);
14             return ;
15         }
16         if( leftnum > 0 ) {     //左括号还有剩余
17             tstr.push_back(();
18             dfs(tstr, leftnum-1, rightnum);
19             tstr.pop_back();
20         }
21         if( rightnum > 0 ) {    //右括号还有剩余
22             tstr.push_back());
23             dfs(tstr, leftnum, rightnum-1);
24             tstr.pop_back();
25         }
26     }
27     
28 private:
29     vector<string> ans;
30 };

 

Generate Parentheses

标签:style   blog   color   io   使用   ar   for   div   cti   

原文地址:http://www.cnblogs.com/bugfly/p/3950821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!