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:
"((()))", "(()())", "(())()", "()(())", "()()()"
#include <vector> #include <string> #include <iostream> using namespace std; void generateParenthesis(int left, int right, vector<string>& res, string path) { if(left == 0 && right == 0) { res.push_back(path); return; } if(left > 0) generateParenthesis(left-1, right, res, path + '('); if(right > left) generateParenthesis(left, right-1, res, path + ')'); } vector<string> generateParenthesis(int n) { vector<string> res; string path = ""; generateParenthesis(n, n, res, path); return res; } } int main(void) { vector<string> res = generateParenthesis(3); for(int i = 0; i < res.size(); ++i) { cout << res[i] << endl; } }