Maison >développement back-end >C++ >Comment générer toutes les combinaisons possibles de caractères et entiers à partir de deux tableaux utilisant LINQ?
Réponse
Pour générer toutes les combinaisons possibles avec LINQ, nous pouvons utiliser la technologie appelée "Descartes". Ce processus implique la création d'une séquence, qui contient chaque combinaison d'éléments possible à partir de plusieurs séquences d'entrée.Le code suivant définit une méthode d'extension
CartesianProduct
Générer la combinaison de chaînes
<code class="language-csharp">static IEnumerable<IEnumerable<T>> CartesianProduct<T>(this IEnumerable<IEnumerable<T>> sequences) { IEnumerable<IEnumerable<T>> emptyProduct = new[] { Enumerable.Empty<T>() }; return sequences.Aggregate( emptyProduct, (accumulator, sequence) => from accseq in accumulator from item in sequence select accseq.Concat(new[] { item }) ); }</code>Une fois que nous avons la méthode
CartesianProduct
Dans cet exemple, la variable
<code class="language-csharp">var arr1 = new[] { "a", "b", "c" }; var arr2 = new[] { 3, 2, 4 }; var result = from cpLine in CartesianProduct( from count in arr2 select Enumerable.Range(1, count).Select(i => i.ToString())) select cpLine.Zip(arr1, (x1, x2) => x2 + "(" + x1 + ")");</code>
combinaison de sortie
result
Pour les combinaisons de sortie spécifiées dans la description de la question, nous pouvons utiliser un cycle simple:
Cette réponse révisée améliore la clarté du code et aborde directement l'instruction PRIVETM par les générations au format "A (i) B (J)".
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!