27 lines
494 B
Go
27 lines
494 B
Go
package q22
|
|
|
|
func gen(n, lvl, used int, buf []byte, ret []string) []string {
|
|
if buf == nil {
|
|
buf = make([]byte, 0, n*2)
|
|
}
|
|
if len(buf) == n*2 {
|
|
return append(ret, string(buf))
|
|
}
|
|
|
|
if used < n {
|
|
buf = append(buf, '(')
|
|
ret = gen(n, lvl+1, used+1, buf, ret)
|
|
buf = buf[:len(buf)-1]
|
|
}
|
|
if lvl > 0 {
|
|
buf = append(buf, ')')
|
|
ret = gen(n, lvl-1, used, buf, ret)
|
|
}
|
|
return ret
|
|
}
|
|
|
|
func generateParenthesis(n int) []string {
|
|
return gen(n, 0, 0, nil, nil)
|
|
}
|
|
|
|
var _ = generateParenthesis
|