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; };