题解 | 全排列
全排列
https://www.nowcoder.com/practice/1d1fe38275da44b5848add89f9e223b1
package main
import (
"fmt"
)
func main() {
var n int
fmt.Scan(&n)
if n <= 0 {
fmt.Println("n 必须是正整数")
return
}
// 初始化数字序列
nums := make([]int, n)
for i := 0; i < n; i++ {
nums[i] = i + 1
}
result := [][]int{}
var dfs func([]int, []int)
dfs = func(nums, con []int) {
if len(nums) == 0 {
result = append(result, con)
return
}
for i := 0; i<len(nums); i++ {
// tmp := append(con, nums[i])
tmp := append([]int{}, con...)
tmp = append(tmp, nums[i])
nexNums := append([]int{}, nums[:i]...)
nexNums = append(nexNums, nums[i+1:]...)
dfs(nexNums, tmp)
}
}
dfs(nums, []int{})
for _, v := range result {
for _, vv := range v{
fmt.Printf("%d ", vv)
}
fmt.Printf("\n")
}
}

