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;

};

 

你可能感兴趣的:(LeetCode)