Go言語で順列を実装
permute.go
package main
func Permute(nums []int) [][]int {
ans := calc(nums)
return ans
}
func calc(nums []int) [][]int {
if len(nums) == 0 {
return [][]int{}
}
var ans [][]int
for i := range nums {
arr := []int{}
for j := range nums {
if i != j {
arr = append(arr, nums[j])
}
}
childs := calc(arr)
if len(childs) == 0 {
ans = append(ans, []int{nums[i]})
return ans
}
for _, child := range childs {
pattern := append([]int{nums[i]}, child...)
ans = append(ans, pattern)
}
}
return ans
}
main.go
package main
import (
"fmt"
)
func main() {
nums := []int{1, 2, 3}
for _, v := range Permute(nums) {
fmt.Println(v)
}
}
実行結果
[1 2 3]
[1 3 2]
[2 1 3]
[2 3 1]
[3 1 2]
[3 2 1]