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

Leetcode--Generate Parentheses

編輯:C++入門知識

Leetcode--Generate Parentheses


Problem Description:

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:

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

分析:按照題目意思,輸入n,找出所有包含n個括號對的合法序列,自己想了半天沒有什麼思路,然後搜索了一下看到一條准則:即出現的“)”數目小於等於出現的“(”數目即可,因此直接利用DFS,即可得到所有序列。具體代碼如下:

class Solution {
public:
    vector res;

    void dfs(int n,int left,int right, string str)
    {
        if(left==right&&left==n)
        {
            res.push_back(str);
            return;
        }

        if(leftn)
            return;
        else
        {
            str+='(';
            dfs(n,left+1,right,str);
            str=str.substr(0,str.size()-1);

            str+=')';
            dfs(n,left,right+1,str);
            str=str.substr(0,str.size()-1);
        }

    }

    vector generateParenthesis(int n) {
        if(n<=0)
            return res;
        string s="";
        dfs(n,0,0,s);
        return res;
    }
};


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