Permutations dans Go : un guide détaillé
Cet article traite des différentes façons de générer toutes les permutations possibles d'une liste d'éléments dans Go.
Une méthode courante est l'algorithme de Heap, qui génère chaque permutation à partir de la précédente en échangeant une paire d'éléments. La fonction Go suivante implémente cet algorithme :
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 }
Pour utiliser cette fonction, transmettez simplement une tranche d'entiers et elle renverra une tranche de toutes les permutations de la liste d'entrée. Par exemple :
arr := []int{1, 2, 3} fmt.Println(permutations(arr))
Une autre méthode pour générer des permutations consiste à utiliser le système numérique factoriel. Cette méthode permet de générer rapidement la nième permutation lexicographique. Pour plus d'informations sur cette méthode, reportez-vous à la section « Permutation » dans l'article ci-dessus.
En implémentant ces méthodes, vous pouvez facilement générer des permutations dans Go pour les utiliser dans diverses applications.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!