多个数的排列组合, 数字可以重复, 001, 002, 003这种

package main

import (
    "fmt"
)

func main() {
    var (
        arr = []int{1, 2, 3}
        brr = make([]int, len(arr))
        crr [][]int
    )
    getBrr(&crr, arr, brr, len(brr))
    fmt.Println(crr)
}

func getBrr(crr *[][]int, arr, brr []int, lineNum int) {
    if lineNum < 1 {
        slice := make([]int, len(arr))
        copy(slice, brr)
        *crr = append(*crr, slice)
        return
    }
    lineNum--
    for j := 0; j < len(arr); j++ {
        brr[lineNum] = arr[j]
        getBrr(crr, arr, brr, lineNum)
    }
}

使用了递归+copy, 有没有效率更高的方法

标签: none

添加新评论