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: "((()))", "(()())", "(())()", "()(())", "()()()"
backtracking solution:
class Solution { private : int n; vector<string> result; public: vector<string> generateParenthesis(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function rs.clear() ; if(n <1 ) return rs; this.n = n; string s; backtracking(s,0,0); return result ; } void backtracking(string path, int left, int right) { if(left > n || right > n) return ; if(path.size() == 2*n ) result.push_back(path); if(left+1 <= n) backtracking(path+'(', left+1, right ); if(right+1<= left) backtracking(path+')',left, right+1) ; } };