Permutationen in Go: Eine ausführliche Anleitung
In diesem Artikel werden die verschiedenen Möglichkeiten zum Generieren aller möglichen Permutationen einer Liste von Elementen in beschrieben Los.
Eine gängige Methode ist der Heap-Algorithmus, der jede Permutation aus der vorherigen generiert, indem er ein Elementpaar vertauscht. Die folgende Go-Funktion implementiert diesen Algorithmus:
func permutations(arr []int)[][]int{ var helper func([]int, int) res := [][]int{} helper = func(arr []int, n int){ if n == 1{ tmp := make([]int, len(arr)) copy(tmp, arr) res = append(res, tmp) } else { for i := 0; i < n; i++{ helper(arr, n - 1) if n % 2 == 1{ tmp := arr[i] arr[i] = arr[n - 1] arr[n - 1] = tmp } else { tmp := arr[0] arr[0] = arr[n - 1] arr[n - 1] = tmp } } } } helper(arr, len(arr)) return res }
Um diese Funktion zu verwenden, übergeben Sie einfach ein Segment von Ganzzahlen und es wird ein Segment aller Permutationen der Eingabeliste zurückgegeben. Zum Beispiel:
arr := []int{1, 2, 3} fmt.Println(permutations(arr))
Eine andere Methode zur Generierung von Permutationen ist die Verwendung des faktoriellen Zahlensystems. Diese Methode ermöglicht die schnelle Generierung der n-ten lexikografischen Permutation. Weitere Informationen zu dieser Methode finden Sie im Abschnitt „Permutation“ im obigen Artikel.
Durch die Implementierung dieser Methoden können Sie ganz einfach Permutationen in Go generieren, die Sie in einer Vielzahl von Anwendungen verwenden können.
Das obige ist der detaillierte Inhalt vonWie erstelle ich alle Permutationen einer Liste in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!