任何想法來做出組合的最佳代碼:如何列出組合可能性golang
與此:
letters := []string{"a", "b", "c", "d"}
有:a ab ac ad abc abd b bc bcd
等等
問候和感謝
任何想法來做出組合的最佳代碼:如何列出組合可能性golang
與此:
letters := []string{"a", "b", "c", "d"}
有:a ab ac ad abc abd b bc bcd
等等
問候和感謝
您正在尋找Powerset:
One a接近角是:
開始了slice
一個空元素,讓我們把它的結果是:
[[]]
保持先前片,並創建一個新的切片與第一要素a
你的數據結構加入到你到你原始片中的每一個元素。
[[]]
< --old; [[a]]
< --new
合併它們
[[], [a]]
做同樣的事情第二個元素b
:
[[], [a]]
< --old; [[b], [ab]]
< --new
=>[[], [a], [b], [ab]]
c
爲:
[[], [a], [b], [ab]]
< --old; [[c], [ac], [bc], [abc]]
< --new
=>[[], [a], [b], [ab], [c], [ac], [bc], [abc]]
等..
爲了補充這個答案,這裏給出了一個很好的鏈接,它給出瞭如何操作切片的例子https://github.com/golang /去/維基/ SliceTricks – reticentroot
即圖案不是正則的。這是完整的輸出。 'a ab ac ad abc abd b bc bcd,c,cd' – atilkan
參見Knuth,TAOCP§7.2 – Volker