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
1050 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 :

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));
    }
}
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!

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