Generate Parentheses (Well-formed Combinations)?
Follow on:
List<string> GenerateParenthesis(int n)
List<string> result = new List<string>();
Generate("", 0, 0, n, result);
return result;
void Generate(string current, int open, int close, int max,
List<string> result)
if (current.Length == max * 2)
result.Add(current);
return;
if (open < max)
Generate(current + "(", open + 1, close, max, result);
if (close < open)
Generate(current + ")", open, close + 1, max, result);
Explanation:
Use backtracking to add '(' and ')' only when valid.