Leetcode#22 Generate Parentheses

原创 2015年07月08日 00:29:25

Difficulty: Medium

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:

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

方法是递归/回溯,这个很容易想到,但是算法比较难以理清,看完清晰题解之后才理清楚。

具体的方法是通过两个int le 和ri 来记录'('和‘)'的剩余个数,递归赋值,列遍所有可能,算法非常巧妙。

void gen(int le, int ri, string s, vector<string>& ans){
    if(le==0&&ri==0)
        ans.push_back(s);
    if(le>0){
        gen(le-1,ri,s+'(',ans);
    }
    if(ri>le&&ri>0){
        gen(le,ri-1,s+')',ans);
    }

}

vector<string> generateParenthesis(int n) {
          vector<string> ans;
          string s;
          gen(n,n,s,ans);
          return ans;
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【022-Generate Parentheses(生成括号)】

【022-Generate Parentheses(生成括号)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given n pairs of parentheses, ...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月23日 07:52
  • 2385

LeetCode 22:Generate Parentheses的递归,回溯两种解法

Generate Parentheses Given n pairs of parentheses, write a function to generate all combination...
  • liuyuan185442111
  • liuyuan185442111
  • 2015年08月24日 11:29
  • 620

22.Generate Parentheses&n对括号的全部有效组合

Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes...
  • sjt091110317
  • sjt091110317
  • 2015年06月05日 15:51
  • 500

每日算法之二十:Generate Parentheses

Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes...
  • yapian8
  • yapian8
  • 2014年05月26日 21:10
  • 744

Leetcode22. Generate Parentheses(生成有效的括号组合)

输入一个正整数N,打印出所有符合要求的括号组合。
  • qq_25827845
  • qq_25827845
  • 2017年07月10日 22:27
  • 767

代码的优化过程: 生成括号 Generate Parentheses

我是DFS的初学者,所以比较在意一些形式化的东西。现在我一步步得出那样的代码。   版本0:  学习permutation unique 的解法。    5     vector > permuteU...
  • zhangxx0811
  • zhangxx0811
  • 2014年02月22日 00:58
  • 586

LeetCodet题解--22. Generate Parentheses(生成n对匹配的括号)

链接 LeetCode题目:https://leetcode.com/problems/generate-parentheses GitHub代码:https://github.com/...
  • gatieme
  • gatieme
  • 2016年04月08日 11:45
  • 1583

算法设计与分析(15) -- Generate Parentheses(难度:Medium)

Generate Parentheses
  • alexlau8
  • alexlau8
  • 2017年05月29日 17:22
  • 144

关于generate用法的总结【Verilog】

Abtract generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和...
  • BBS_vip
  • BBS_vip
  • 2015年06月26日 20:21
  • 3735

CodeRush使用教程十五:代码修复提示

当你把鼠标放在code issue指示器上或标记的代码上时,就会出现一个代码修复提示,它会指出你代码的错误并给出解决方法。CodeRush 通常使用代码分发模块或重构来消除错误,而要用代码修复提示来...
  • xieyufei
  • xieyufei
  • 2013年09月12日 14:06
  • 903
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Leetcode#22 Generate Parentheses
举报原因:
原因补充:

(最多只允许输入30个字)