程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode 22 Generate Parentheses

LeetCode 22 Generate Parentheses

編輯:C++入門知識

LeetCode 22 Generate Parentheses


翻譯

給定一個括號序列,寫一個函數用於生成正確形式的括號組合。
例如,給定n = 3,一個解決方案集是:
((())), (()()), (())(), ()(()), ()()()

原文

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 {
public:
    vector result;
    vector generateParenthesis(int n) {
        generate(0, 0, , n);
        return result;
    }
    void generate(int left, int right, string s, int n) {
        if(right == n) {
            result.push_back(s);
        }
        else
        {
            if(left < n)
            {
                generate(left + 1, right, s + (, n);
            }
            if(right < left)
            {
                generate(left, right + 1, s + ), n);
            }
        }
    }
};

我自己寫的是用排列組合加上第20題的代碼,有些繁瑣不如上面的解法,為了更直觀的理解這個遞歸的過程,就畫了下面這個示意圖。輕拍……

這裡寫圖片描述

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved