28 lines
411 B
Go
28 lines
411 B
Go
package main
|
|
|
|
func dfs(str string, ret *[]string, n, l, r int) {
|
|
if r >= n {
|
|
*ret = append(*ret, str)
|
|
return
|
|
}
|
|
if l < n {
|
|
dfs(str+"(", ret, n, l+1, r)
|
|
}
|
|
if r < l {
|
|
dfs(str+")", ret, n, l, r+1)
|
|
}
|
|
}
|
|
|
|
func generateParenthesis(n int) []string {
|
|
ret := []string{}
|
|
dfs("", &ret, n, 0, 0)
|
|
return ret
|
|
}
|
|
|
|
func main() {
|
|
ret := generateParenthesis(3)
|
|
for _, val := range ret {
|
|
println(val + " ")
|
|
}
|
|
}
|