Maison > développement back-end > Golang > Comment générer toutes les permutations d'une liste en Go ?

Comment générer toutes les permutations d'une liste en Go ?

Patricia Arquette
Libérer: 2024-12-05 15:20:10
original
735 Les gens l'ont consulté

How to Generate All Permutations of a List in Go?

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
}
Copier après la connexion

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))
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal