1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class Solution { public: vector<string> generateParenthesis(int n) { vector<string> result; string current; backtrack(result, current, n, 0, 0); return result; }
private: void backtrack(vector<string>& result, string& current, int n, int open, int close) { if (current.size() == 2 * n) { result.push_back(current); return; } if (open < n) { current.push_back('('); backtrack(result, current, n, open + 1, close); current.pop_back(); }
if (close < open) { current.push_back(')'); backtrack(result, current, n, open, close + 1); current.pop_back(); } } };
|