题目描述:Generate Parentheses

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:

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

分析:

递归

代码如下:

class Solution {
private:
vector<string> ret;
public:
void solve(int dep, int maxDep, int leftNum, int leftNumTotal, string s)
{
//如果(个数超出,return
if (leftNumTotal * 2 > maxDep)
return; //如果长度足够,return
if (dep == maxDep){
ret.push_back(s);
return;
} for(int i = 0; i < 2; i++) //加 (
if (i == 0)
solve(dep + 1, maxDep, leftNum + 1, leftNumTotal + 1, s + '(');
//加 )
else if (leftNum > 0)
solve(dep + 1, maxDep, leftNum - 1, leftNumTotal, s + ')');
} vector<string> generateParenthesis(int n){
ret.clear();
solve(0, 2 * n, 0, 0, "");
return ret;
}
};

Java:

    public List<String> generateParenthesis(int n) {

        ArrayList<String> result = new ArrayList<String>();
dfs(result, "", n, n);
return result; } public void dfs(ArrayList<String> result, String s, int left, int right) { if (left > right) {
return;
} if (left == 0 && right == 0) {
result.add(s);
return;
} if (left > 0) {
dfs(result, s + "(", left - 1, right);
} if (right > 0) {
dfs(result, s + ")", left, right - 1);
} }

最新文章

  1. Java可变参数传递中可以接收多个对象
  2. 给dos命令“.bat”文件换图标
  3. LaTex 数学公式
  4. 将数据导出到Excel2007格式。
  5. 定一个小目标:明年1024能成功转行web前端,光荣地成为一个程序员!
  6. Spring 配置文件applicationContext.xml
  7. SQuirreL 连接 hive
  8. SQL判断字符串里不包含字母
  9. ZOJ 3794 Greedy Driver
  10. IPoint Interface接口
  11. cooking构建工具报错MSBUILD :error MSB4132解决办法
  12. 【JAVAWEB学习笔记】25_基础加强:类加载器、注解 @xxx和动态代理
  13. 友元函数 C++
  14. Linux修改主机名脚本-不重启-支持RedHat、SUSE
  15. java验证码生成
  16. Yii的操作提示框
  17. Mybatis 缓存失效的几种情况
  18. typeof 与instanceof
  19. Thread中的一些方法
  20. 理清cordova插件的调用流程

热门文章

  1. Lock接口之Condition接口
  2. Azure Data Factory(三)集成 Azure Devops 实现CI/CD
  3. iOS面试高薪,进阶 你会这些呢嘛?(持续更新中)
  4. Centos中部署NetCore项目(一)
  5. python开发基础(二)运算符以及数据类型之dict(字典)
  6. 【原创】Linux虚拟化KVM-Qemu分析(五)之内存虚拟化
  7. 利用sklearn实现knn
  8. 【JVM第八篇--垃圾回收】GC和GC算法
  9. 邻居子系统 arp 状态图
  10. 从头学起Verilog(一):组合逻辑基础与回顾