回溯法
package main
import "fmt"
func AllSort(arr []string) (res [][]string) {
n := len(arr)
if n <= 1 {
return [][]string{arr}
}
for i := 0; i < n; i++ {
header := arr[i]
newArr := make([]string,0)
newArr = append(newArr, arr[0:i]...)
newArr = append(newArr, arr[i+1:n]...)
inRes := AllSort(newArr)
for _, v := range inRes {
hearArr := []string{header}
hearArr = append(hearArr, v...)
res = append(res, hearArr)
}
}
return res
}
func main() {
arr := []string{"a", "b", "c"}
result := AllSort(arr)
fmt.Println(result)
}