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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <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>
|
Copier après la connexion
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!