zoukankan      html  css  js  c++  java
  • LeetCode OJ-- Generate Parentheses *

    https://oj.leetcode.com/problems/generate-parentheses/

    输入n产生n个( ,n个 )组成的所有合法的括号组合。

    现在纸上画画,找到规律:

    1.每一个位置上 ( 的个数必须 >= ) 的个数

    2.如果 ( 的个数是n了,则只能再画 ) 了

    3.否则,既可以是 ( 又可以是 )

    4.初始第一个位置是 (

    5.当 string的长度是 2*n 的时候停止

    使用递归调用:

    class Solution {
    public:
        vector<string> generateParenthesis(int n) {
            vector<string> ans;
            if(n<=0)
                return ans;
    
            string ansPiece;
            ansPiece.append("(");
    
            subGenerateParenthesis(n,ans,ansPiece);
    
            return ans;
        }
        void subGenerateParenthesis(int &n, vector<string> &ans, string ansPiece)
        {
            if(ansPiece.size() == 2*n)
            {
                ans.push_back(ansPiece);
                return;
            }
            int leftNum = 0;
            int rightNum = 0;
            for(int i = 0;i<ansPiece.size();i++)
            {
                if(ansPiece[i]=='(')
                    leftNum++;
                else
                    rightNum++;
            }
            if(leftNum==n )
            {
                ansPiece.push_back(')');
                subGenerateParenthesis(n,ans,ansPiece);
            }
            else if(leftNum == rightNum)
            {
                ansPiece.push_back('(');
                subGenerateParenthesis(n,ans,ansPiece);
            }
            else
            {
                string ansPiece2 = ansPiece;
                ansPiece.push_back('(');
                subGenerateParenthesis(n,ans,ansPiece);
    
                ansPiece2.push_back(')');
                subGenerateParenthesis(n,ans,ansPiece2);
            }
        }
    };
  • 相关阅读:
    Codeforces Round448 D
    Codeforces Round448 C Square Subsets
    hdu6006
    2017计蒜客计算之道初赛第六场 微软大楼设计方案(困难)
    UVA 12105 Bigger is Better
    Codeforce 55D Beautiful numbers
    4月补题
    C++小技巧之CONTAINING_RECORD
    Codeforces #380 div2 E(729E) Subordinates
    Codeforces #380 div2 D(729D) Sea Battle
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3817319.html
Copyright © 2011-2022 走看看