题解 | 全排列

全排列

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")
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务