staticvoidAddParen(List<string> result, int leftRem, int rightRem, char[] str, int index) { if (leftRem < 0 || rightRem < leftRem) // invalid state { return; }
if (rightRem > leftRem) { str[index] = ')'; AddParen(result, leftRem, rightRem - 1, str, index + 1); } } }
static List<string> GenerateParens(int n) { char[] str = newchar[n * 2]; var result = new List<string>(); AddParen(result, n, n, str, 0); return result; }