首页 > 其他 > 详细

leetcode -- medium part

时间:2016-10-22 23:24:51      阅读:216      评论:0      收藏:0      [点我收藏+]

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!