zoukankan      html  css  js  c++  java
  • leetcode: Generate Parentheses

    http://oj.leetcode.com/problems/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:
    
    "((()))", "(()())", "(())()", "()(())", "()()()"

    思路

    对于第k个元素,考虑以下两种情况:

    1. 前k - 1个元素中'('出现次数小于n,第k个元素可以是'('。
    2. 前k - 1个元素中')'出现的次数小于'(',第k个元素可以是')'。
    class Solution {
    public:
        void internalGenerateParenthesis(vector<string> & result,
                string &s,
                int n,
                int left_num,
                int right_num) {
            if ((n == left_num) && (n == right_num)) {
                result.push_back(s);
            }
            
            if (left_num < n) {
                s.push_back('(');
                internalGenerateParenthesis(result, s, n, left_num + 1, right_num);
                s.pop_back();
            }
            
            if (right_num < left_num) {
                s.push_back(')');
                internalGenerateParenthesis(result, s, n, left_num, right_num + 1);
                s.pop_back();
            }
        }
        
        vector<string> generateParenthesis(int n) {
            vector<string> result;
            string s;
            
            internalGenerateParenthesis(result, s, n, 0, 0);
            
            return result;
        }
    };
  • 相关阅读:
    OCR中表格识别及WORD生成
    太阳能跟踪系统
    QA300太阳能移动电源
    OCR之表格识别
    2012112
    2012123
    2012121
    2011101
    201191
    2011828
  • 原文地址:https://www.cnblogs.com/panda_lin/p/generate_parentheses.html
Copyright © 2011-2022 走看看