7
votes

Mots combinaisons sans répétition

J'ai 10 mots. Comment puis-je obtenir toutes les combinaisons possibles de 5 mots (n = 10, k = 5) . La commande n'a pas d'importance .

Par exemple: "A", "B", "C", si k = 2 (n = 3 dans ce cas) , il voudrait AB, BC et AC. Peut-être connaissez-vous un code ou un exemple utile.

P.s. Désolé si je ne suis pas assez juste parce que je ne connais pas l'anglais très bon.


0 commentaires

4 Réponses :


25
votes

Ce que vous essayez de faire est d'obtenir toutes les permutations d'une collection.


2 commentaires

Être plus correct mathématiquement. Vous appelez ces combinaisons (la commande n'est pas importante) sans répétition (un élément peut survenir au plus 1 fois ou moins). mathsisfun.com/combinatorics/comminations-permutations.html


Ne "au plus 1 fois" implique "ou moins"?



0
votes

Qu'en est-il d'une solution plus fonctionnelle

ab
ac
ad
ae
ba
bc
bd
be
ca
cb
cd
ce
da
db
dc
de
ea
eb
ec
ed


1 commentaires

L'OP a précisé que l'ordre n'a pas d'importance, donc "AB" et "BA", qui apparaissent tous deux à la suite de ce code, sont les mêmes.



2
votes

Voici ce que j'ai mis ensemble: xxx

... xxx

produit: xxx

Notez que cela est concis mais inefficace et ne doit pas être utilisé pour de grands ensembles ni des boucles intérieures. Notamment, les matrices courtes sont recréées plusieurs fois et pourraient être mémotées et le ienumerable sera itéré plusieurs fois, ce qui peut entraîner des travaux inattendus si les soins ne sont pas pris.

En outre, si l'entrée contient des duplicats, la sortie sera également. Soit utiliser .Distinct (). TOARRAY () Premièrement, ou utilisez une autre solution qui inclut la vérification de l'égalité et, vraisemblablement, prend un IequalityComparer pour généralité.


0 commentaires

1
votes
ab
ac
ad
ae
bc
bd
be
cd
ce
de

1 commentaires

Bienvenue dans le débordement de pile. Bien que ce code puisse répondre à la question, fournissant un contexte supplémentaire concernant la raison et / ou la manière dont ce code répond à la question améliore sa valeur à long terme. Comment répondre . Sincères amitiés.