Maison > développement back-end > C++ > Comment générer toutes les combinaisons possibles à partir d'une liste d'entiers en C# ?

Comment générer toutes les combinaisons possibles à partir d'une liste d'entiers en C# ?

DDD
Libérer: 2025-01-16 17:12:38
original
975 Les gens l'ont consulté

How to Generate All Possible Combinations from a List of Integers in C#?

Liste toutes les combinaisons dans une liste de valeurs

En C#, étant donné une liste dynamique d'entiers, il est souvent nécessaire de générer toutes les combinaisons possibles de ses éléments. Par exemple, pour la liste {1, 2, 3}, vous devez générer la combinaison suivante :

<code>{1, 2, 3}
{1, 2}
{1, 3}
{2, 3}
{1}
{2}
{3}</code>
Copier après la connexion

Pour ce faire, utilisez l'algorithme suivant :

  1. Initialisez le compteur : Utilisez les puissances de 2 (la puissance est le nombre d'éléments dans la liste) pour déterminer le nombre de combinaisons possibles.
  2. Convertir le compteur en binaire : Représente le compteur au format binaire, en le complétant avec des zéros si nécessaire pour correspondre à la longueur de la liste d'entrée.
  3. Extraire une combinaison d'éléments : Pour chaque bit de la représentation binaire, si le bit est défini sur "1", affichez l'élément à l'index correspondant dans la liste d'entrée.
  4. Compteur d'itérations : Incrémentez le compteur jusqu'à ce qu'il atteigne le nombre maximum de combinaisons possible.
  5. Imprimer les combinaisons : Afficher chaque combinaison sur une ligne distincte.

Le code C# fourni démontre l'implémentation de cet algorithme :

<code class="language-csharp">static void Main(string[] args)
{
    GetCombination(new List<int> { 1, 2, 3 });
}

static void GetCombination(List<int> list)
{
    double count = Math.Pow(2, list.Count);
    for (int i = 1; i < count; i++)
    {
        string binary = Convert.ToString(i, 2).PadLeft(list.Count, '0');
        List<int> combination = new List<int>();
        for (int j = 0; j < binary.Length; j++)
        {
            if (binary[j] == '1')
            {
                combination.Add(list[j]);
            }
        }
        Console.WriteLine(string.Join(", ", combination));
    }
}</code>
Copier après la connexion

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal