problem:

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:

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

一想到要用递归来解决的就有点头疼,因为还没有好好系统的回顾一下递归,总觉得判断什么时候返回很困难。这个是这样的,用l和r分别记录剩下的左括号和右括号。当l和r都为零的时候就是输出了一种正确的可能了。前提是任何时刻,剩下的右括号要比左括号多或者相等,否则返回。其次,r和l都为零的时候,就把temp str记录下来。代码和部分注释如下:

class Solution {
private:
void subGe(int l, int r, string t, vector<string> &ans)
{
if(l > r) // 左代表‘(’右代表‘)’,剩下的左括号要比右括号少才合法
return ;
if (l == && r == )
{ans.push_back(t);return;} // 这是t已经是2n个字符了
if(l > )
subGe(l - , r, t + "(", ans); // 输出一个(,则左括号减一
if(r > )
subGe(l, r - , t + ")", ans);
}
public:
vector<string> generateParenthesis(int n)
{
vector<string> ans;
ans.clear();
if (n <= )
return ans;
subGe(n, n, "", ans);// 初始时,左右括号都是n个
return ans;
}
};

最新文章

  1. php curl 多线程方法
  2. 手势响应 ,避免点击多个cell同时响应同一手势多次,只响应第一个cell
  3. Java 的静态代理 动态代理(JDK和cglib)
  4. C# DateTime 格式化 奇怪问题!
  5. 一&#183;创建Linux服务器(基于阿里云)
  6. Linux常用命令_(文件操作)
  7. 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量
  8. spring集成quartz scheduler
  9. Android百度地图开发04之POI检索
  10. [Hive - Tutorial] Built In Operators and Functions 内置操作符与内置函数
  11. java常见内存溢出(OOM)
  12. 持续集成环境Gitlab-CI的官方安装过程解析
  13. soj3129: windy和水星 -- 水星数学家 2
  14. 使用iperf测试网卡吞吐性能
  15. 批量压缩 css js 文件 包含多个文件 自动识别
  16. E2040 Declaration terminated incorrectly - System.ZLib.hpp(310) ZLIB_VERSION
  17. Docker学习之安装mysql
  18. JavaScript调用wcf服务,并且处理返回的字典集合
  19. jupyter安装,修改登录密码,启动
  20. JQuery攻略(二) Jquery手册

热门文章

  1. Java里泛型有什么作用
  2. IE浏览器兼容性问题解决方法
  3. 【MySQL笔记】mysql来源安装/配置步骤和支持中国gbk/gb2312编码配置
  4. Android的相关的源代码的方法
  5. Java工程(3)——但从谈论用户的角度UI图案
  6. 左右GNU Linux企业加密文件系统 eCryptfs简介
  7. 必要的软件架构师——编译原理&amp;#183;语法
  8. 苹果公司的新的编程语言 Swift 高级语言()两--基本数据类型
  9. 查询记录rs.previous()使用
  10. ReactJS.NET