Không thực sự chắc chắn nếu điều này trả lời câu hỏi của bạn nhưng đây là một thực hiện đệ quy đơn giản để tìm đầu ra dưới đây.
package main
import "fmt"
func main() {
values := [][]int{}
// These are the first two rows.
row1 := []int{1, 2, 3}
row2 := []int{4, 5, 6}
row3 := []int{7, 8, 9}
// Append each row to the two-dimensional slice.
values = append(values, row1)
values = append(values, row2)
values = append(values, row3)
fmt.Println(getPermutation(values))
}
func getPermutation(vids [][]int) [][]int {
toRet := [][]int{}
if len(vids) == 0 {
return toRet
}
if len(vids) == 1 {
for _, vid := range vids[0] {
toRet = append(toRet, []int{vid})
}
return toRet
}
t := getPermutation(vids[1:])
for _, vid := range vids[0] {
for _, perm := range t {
toRetAdd := append([]int{vid}, perm...)
toRet = append(toRet, toRetAdd)
}
}
return toRet
}
https://play.golang.org/p/f8wktrxkU0
Output của đoạn trên:
[[1 4 7] [1 4 8] [1 4 9] [1 5 7] [1 5 8] [1 5 9] [1 6 7] [1 6 8] [1 6 9] [2 4 7] [2 4 8] [2 4 9] [2 5 7] [2 5 8] [2 5 9] [2 6 7] [2 6 8] [2 6 9] [3 4 7] [3 4 8] [3 4 9] [3 5 7] [3 5 8] [3 5 9] [3 6 7] [3 6 8] [3 6 9]]
'itertools.product' mang đến cho bạn sản phẩm Descartes của một số bộ. Nó * không * cung cấp cho bạn hoán vị. Mặc dù bạn có thể sử dụng các sản phẩm Descartes để tìm ra các hoán vị, điều đó sẽ không hiệu quả khủng khiếp. http://docs.python.org/2/library/itertools.html#itertools.product – scvalex
Tôi là một thằng ngốc. Tôi luôn luôn nhận được những hỗn hợp, và tôi tìm thấy một gói cho các sản phẩm Descartes. Cảm ơn – Colum
@Colum Bạn đã phạm sai lầm; điều đó không làm cho bạn thành kẻ ngốc. –