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

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

DDD
DDDoriginal
2025-01-16 17:39:11362parcourir

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

Générer une liste de toutes les combinaisons possibles

En C#, vous pouvez rencontrer des situations dans lesquelles vous devez traiter une liste d'entiers mais ne connaissez pas le nombre d'éléments avant l'exécution. Pour résoudre cette situation, il est crucial de trouver toutes les combinaisons possibles de listes.

Pour ce faire, vous pouvez utiliser une méthode mathématique :

<code class="language-csharp">static void GetCombination(List<int> list)
{
    double count = Math.Pow(2, list.Count);
    for (int i = 1; i < count; i++)
    {
        string str = Convert.ToString(i, 2);
        str = str.PadLeft(list.Count, '0');
        Console.Write("{");
        for (int j = 0; j < str.Length; j++)
        {
            if (str[j] == '1')
            {
                Console.Write(list[j] + ",");
            }
        }
        Console.WriteLine("}");
    }
}</code>

Cette méthode :

  • Utilisez 2^list.Count pour calculer le nombre total de combinaisons.
  • Convertissez chaque index combiné i en sa représentation binaire sous forme de chaîne str.
  • Remplissez la chaîne avec des zéros non significatifs pour qu'elle corresponde à la longueur de la liste.
  • Parcourez les caractères de str. Si le caractère est « 1 », l'élément correspondant dans la liste est affiché.
  • Répétez cette opération pour chaque indice i, générant ainsi toutes les combinaisons possibles.

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