22. 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:
    vector<string> generateParenthesis(int n) {
        vector<string> svec;
        if(n<=0)
            return svec;
        generateParenthesis(svec,"",n,n);
        return svec;
    }
    
    void generateParenthesis(vector<string> &v,string s,int l,int r){
        if(l==0 && r==0)
            v.push_back(s);
        
        if(l>0)
            generateParenthesis(v,s+"(",l-1,r);
        if(r>0 && l<r)
            generateParenthesis(v,s+")",l,r-1);
    }
    
};

 

posted on 2017-03-06 08:12  123_123  阅读(77)  评论(0编辑  收藏  举报