zoukankan      html  css  js  c++  java
  • 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:

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

    思路:我们通过递归来生成所有结果。

    递归过程中,我们使用两个变量,left_left和right_left,分别表示当前左括号还要出现多少次以及右括号还要出现多少次。

    这里有两种情况要注意:当left_left = right_left时,当前位置应该至少插入1个左括号,不然就不合法了。

    当left_left < right_left时,说明前面左括号比右括号要多,这里可以不插入左括号。

     1 class Solution {
     2 public:
     3     void genString(vector<string>& res, int left_left, int right_left, string cur)
     4     {
     5         if (!left_left && !right_left)
     6             res.push_back(cur);
     7         else
     8         {
     9             if (left_left < right_left)
    10                 genString(res, left_left, right_left - 1, cur + ")");
    11             for (int i = 1; i <= left_left; i++)
    12             {
    13                 cur.append("(");
    14                 genString(res, left_left - i, right_left - 1, cur + ")");
    15             }
    16         }
    17     }
    18     vector<string> generateParenthesis(int n) {
    19         vector<string> res;
    20         genString(res, n, n, "");
    21         return res;
    22     }
    23 };
  • 相关阅读:
    Oracle Spool详解
    转自云界漫步:同步容灾100公里的限制来自哪里
    中国十大基金公司排行榜
    DataGuard体系结构
    SWIFT国际资金清算系统
    linux -- 命令大全
    bootstrap -- css -- 图片
    bootstrap -- css -- 按钮
    bootstrap -- css -- 表单控件
    bootstrap -- css -- 表单
  • 原文地址:https://www.cnblogs.com/fenshen371/p/4922292.html
Copyright © 2011-2022 走看看