LeetCode_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:

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

  

class Solution {
public:
    DFS(string s, int left, int right)
    {
        if(left + right == n * 2){
            res.push_back(s);
            return;
        }
        if(left == right){
            s += '(';
            DFS(s, left+1, right);
        }else  if(left > right){
            if(left < n){
                DFS(s+'(', left+1, right);
            }
            DFS(s+')', left, right +1);
        }
    }
    vector<string> generateParenthesis(int n) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        res.clear();
        this->n = n;
        string s = "";
        DFS(s, 0, 0);
        return res;
    }
private:
    vector<string> res;
    int n;
};
原文地址:https://www.cnblogs.com/graph/p/3301949.html