难度3, 出现频率4
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(int n, vector<string> &res, string path, int left, int right){ if(left == n && right == n){ res.push_back(path); return; } if(left == right) { path.push_back('('); generate(n,res,path,left+1,right); } else if(left == n) { path.push_back(')'); generate(n,res,path,left,right+1); } else{ path.push_back('('); generate(n,res,path,left+1, right); path.back() = ')'; generate(n,res,path,left,right+1); }} vector<string> generateParenthesis(int n) {
vector<string> res; string path; generate(n,res,path,0,0);
return res;
}
No comments:
Post a Comment