Quelle est la meilleure façon de trouver toutes les combinaisons d'éléments dans un tableau?
Quelle est la meilleure façon de trouver toutes les combinaisons d'éléments dans un tableau en c#?
- voulez-vous dire par "éléments uniques dans le tableau" ou "toutes les différentes façons d'ordonner les éléments de votre tableau"?
- Toutes les différentes façons d'ordonner les éléments du tableau.
- C'est aussi savoir que la permutation des éléments dans le tableau
- Voir aussi: ericlippert.com/2013/04/15/producing-permutations-part-one
Vous devez vous connecter pour publier un commentaire.
Il est O(n!)
used.Fill(false);
?Fill
défini? Ce n'est pas un membre debool[]
, ni une extension Linq méthode. Regarless, cependant,false
est la valeur par défaut debool
, il n'est donc pas vraiment nécessaire dans ce cas.Mis à JOUR
Voici un ensemble de fonctions génériques (besoin .net 3.5 ou supérieur) pour les différents scénarios. Les sorties sont pour une liste de {1, 2, 3, 4} et d'une longueur de 2.
Permutations avec répétition
De sortie:
Permutations
De sortie:
K-combinaisons avec répétition
De sortie:
K-combinaisons
De sortie:
GetKCombs( new int[] { 1, 2, 3 }, 3);
source = { aa, bb, cc }, length = 2 : { aa bb }, { aa cc }, { bb cc }´ [correct]
source = { gros, rouge, voiture }, longueur = 2 : { rouge }, { grosse voiture }, { voiture rouge }-> [incorrecte : doit être : { voiture rouge}]Que l'on appelle les permutations.
Cela peut vous donner les permutations de toute la collection:
Exemple:
ToArray
pour créer un tableau à partir de la liste. Si vous disposez de 90 éléments dans la liste, c'est à propos de 1,49 e+138 permutations.Concernant Pengyang réponse:
Voici ma fonction générique qui peut retourner toutes les combinaisons possibles à partir d'une liste de T:
Exemple 1:n=3,k=2
De sortie - une liste d'entier-listes:
.............................................................................
J'ai couru cet exemple et je ne suis pas tout à fait sûr de la justesse des résultats.
Exemple 2:n=3, k=3
De sortie - une liste d'entier-listes:
Cela ne devrait pas arriver avec des combinaisons sinon il devrait préciser que c'est avec la répétition.Voir l'article http://en.wikipedia.org/wiki/Combinations
Peut-être kwcombinatorics peut fournir de l'aide (voir l'exemple sur la page d'accueil):
Il y a des couples de manière très facile de trouver la combinaison de la chaîne entrée par l'utilisateur.
Utiliser cette fonction comme
Pour la réponse détaillée, voir: Donald Knuth, The Art of computer programming (aka TAOCP). Volume 4A, de Dénombrement et de retours en arrière, le chapitre 7.2. Générer toutes les possibilités.
http://www-cs-faculty.stanford.edu/~uno/taocp.html
Une autre version de la solution donnée par Vayas. Ci-dessous le code source complet de la classe:
Cela a fonctionné comme il se doit pour les combinaisons.Mais ne permet pas de choisir les combinaisons de n en k ...
J'ai créé une méthode pour obtenir la combinaison unique de tous les éléments entiers dans un tableau comme indiqué ci-dessous. J'ai utilisé
Tuple
de représenter une paire ou une combinaison de chiffres:Quand j'ai appeler cette méthode dans une application console, puis-je obtenir en dessous de sortie: