題目描述:
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:
["((()))","(()())","(())()","()(())","()()()" ]
解題思路:
這個是用迭代方法,當左括號和又括號的個數相同且等于輸入n時將此時的字符串存入vector中。
這題是用回溯方法估計會更好些。
代碼:


1 class Solution { 2 public: 3 vector<string> generateParenthesis(int n) { 4 vector<string> ret; 5 generate(n, 0, 0, "", ret); 6 return ret; 7 } 8 void generate(int n, int numl, int numr, string str, vector<string>& ret) { 9 if (numl < numr || numl > n || numr > n) 10 return; 11 if (numl == n && numr == n) 12 ret.push_back(str); 13 if (numl < n) { 14 generate(n, numl+1, numr, str+"(", ret); 15 generate(n, numl, numr+1, str+")", ret); 16 } else { 17 generate(n, numl, numr+1, str+")", ret); 18 } 19 } 20 };
?