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

leetcode -- medium part

时间:2016-10-22 23:26:02      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:pre   push   generate   左右   tco   div   int   记录   void   

22. Generate Parentheses

 1 class Solution
 2 {
 3 private:
 4     void generateParenthesis(vector<string> &v, string s, int l, int r) // l和r记录剩余左右括号的数量
 5     {
 6         if(l == 0 && r == 0) // 当且仅当左右括号数量都为0时,正常结束
 7             v.push_back(s);
 8  
 9         if(l > 0)
10             generateParenthesis(v, s + "(", l - 1, r);
11         if(r > 0 && l < r) // 剩余的右括号数量比左括号多时才能添加右括号
12             generateParenthesis(v, s + ")", l, r - 1);
13     }
14 public:
15     vector<string> generateParenthesis(int n)
16     {
17     vector<string> v;
18     generateParenthesis(v, "", n, n);
19     return v;
20     }
21 };

括号匹配数是一个卡特兰数,f(x) = (2n)!/((n+1)! * n!) , f(3) = 5

当作dfs处理,这样得到的顺序是"("从多到少的顺序。

leetcode -- medium part

标签:pre   push   generate   左右   tco   div   int   记录   void   

原文地址:http://www.cnblogs.com/autoria/p/5988547.html

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