Sunday, September 1, 2013

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:
"((()))", "(()())", "(())()", "()(())", "()()()"/**
 void generate(string s, int left, int right, int n, vector<string> &st)
{
   if(right > left)
       return;
    if(left > n || right > n)
        return;
    
    if(left < n )
    {
        generate(s + "(", left + 1, right, n, st);   
    }

    if(right < n )
    {
        generate(s + ")", left, right + 1, n, st);   
    }
    
    if(left  == n && right == n)
    {
        st.push_back(s);
    }
}

vector<string> generateParenthesis(int n) {
    vector<string> vt;
    if(n <= 0)
       return vt;
    generate("", 0, 0, n, vt);
    return vt;
}

No comments:

Post a Comment