J'ai stocké dans un tableau une séquence de combinaisons par exemple: p>
{"hé", "salut", "bonjour"} p>
Et je dois tamponner toutes les combinaisons, par exemple: p>
{hey, salut, bonjour} p> li>
{hey, hey, hey} p> li>
{bonjour, salut, hi} p> li> ol>
etc ... et jusqu'à présent ici est facile à utiliser la rampe, mais mon problème est: p>
Je ne peux pas tamponner les combinaisons en double, comme par exemple: p>
{hey, salut, bonjour} p> li>
{salut, bonjour, hey} p> li> ol>
Comment vous voyez la position de chaque valeur est différente mais il y a les mêmes mots dans ces combinaisons. P>
Comment puis-je supprimer ces combinaisons en double? Des idées? P>
Juste pour faire plus clair ma question: p>
Si j'ai ce tableau: {"HI", "Hey"}, ce sont les valeurs que je peux imprimer: p>
Je ne peux pas imprimer ces valeurs: p>
4 Réponses :
Que diriez-vous de cette approche pour générer vos matrices requises.
considère que le nouveau tableau généré aura Maintenant, nous connaissons la longueur de la matrice que nous voulons générer / trouver est 3. P> Par conséquent, nous avons, P> x + y + z = 3 p>
blockQuote> Notre problème est maintenant réduit pour trouver simplement des valeurs appropriées de x, y et z qui satisferont l'équation ci-dessus. p> Nous pouvons facilement faire cela en utilisant trois pour les boucles P> espère que cela aide. S'il vous plaît laissez-moi savoir si une partie n'est pas claire. P> p> 'x' code> hellos, 'y' code> son et son et > 'z' code> heys. (Nous envisageons leurs comptes parce que leur position dans la matrice résultante n'a pas d'importance pour nous). P>
Merci pour vos efforts, mais cette solution ne fonctionnerait jamais car j'utilise un moyen de recul pour résoudre le problème et si je change les valeurs de la matrice avec: {"Hey", "Bonjour", "Bye"} Cette solution elle deviendrait obsolète. Merci quand même :)
Votre code est dans C ++ code> et la question ne contient pas de balise C ++ code>.
Je suppose que tous les éléments de la matrice sont différents.
Pour avoir dupliquer, il est nécessaire de modifier l'ordre des éléments lors de l'impression, puis de ne pas avoir dupliquer qu'il suffit de laisser les éléments en ordre. < / p>
Un moyen de faire peut être: p> compilation et exécutions: p>
Le code ci-dessous donnera le résultat que vous vouliez:
(il est écrit en Java, commentant si vous avez besoin d'aide pour le traduire dans le langage C) strong> p> résultat: strong> p>
Code complet: strong> p>
Merci de vos efforts, mais cette solution n'est pas correcte, vous imprimez toutes les combinaisons même les duplicats que je ne veux pas :(, de toute façon c'est Java, mon problème est sur le langage C: '). Merci quand même
Une implémentation simple
Test:
p> mots code> doit être défini sur null Code> Avant d'appeler le combine code>. Ce n'est pas nécessaire dans ce cas car argv [argc] code> est un pointeur NULL au démarrage du programme. P>
Que diriez-vous de la combinaison des combinaisons, stockez-les dans un ordre de tri. Donc, lorsque vous faites une nouvelle combinaison, vérifiez simplement si ce vecteur existe dans l'ensemble.
Cet ensemble
code> est défini dans la langue C? jamais entendu parler de çaJ'ai essayé mais de cette façon, d'autres bonnes solutions sont ignorées
En Combinatorics, cela est décrit comme partitionnement de l'entier N dans une somme de m entiers, où n est le nombre d'éléments de chaque "combinaison" et m est le nombre de "combinaisons" dans votre séquence initiale. (Vos exemples ont 3 pour N et M, mais ils ne doivent pas être les mêmes en général, et votre description de votre problème ne précise pas si elles doivent être pour votre problème spécifique.) (Incidemment, évitez d'utiliser le mot " Combinaison "Pour cela; dans des contextes comme celui-ci, ce terme est utilisé ou un but différent en mathématiques.)
Je suis désolé je n'ai trouvé aucun autre moyen de mieux l'expliquer
Configurez des compteurs M dans un tableau
C code>. Concevez un processus pour les introduire: exécutez le premier, ditesc [0] code> de 0 à n, inclus. Pour chaque valeur du premier, exécutez le second de 0 à 0 àN-C [0] code>, inclus. Pour chaque valeur du second, exécutez le troisième de 0 àN-C [0] -C [1] Code>, inclus. La valeur du dernier sera déterminée; C'est n moins la somme des valeurs précédentes. Chaque ensemble de valeurs de ces compteurs détermine un résultat à imprimer: Imprimerc [0] code> des instances de la première "combinaison",c [1] code> de la suivante et bientôt.Je vais essayer de mettre en œuvre cela dans la fonction de retour arrière
Quelle sera la longueur maximale du tableau ??
La longueur est définie au début, il peut s'agir de la valeur que vous voulez
Si la longueur maximale du tableau est n, vous voulez simplement générer toutes les combinaisons possibles de longueur N, non ?? En outre, la position des éléments n'a pas d'importance?
Quelle est la valeur maximale que vous allez mettre de la longueur dans votre cas d'utilisation?
Veuillez lire à nouveau l'exemple de ma question, je ne peux pas expliquer mieux de ça
plutôt que de trouver un moyen de supprimer les duplicats, ne les créez pas, car cela ne change pas l'ordre des éléments
Je ne crée rien, je n'ai pas seulement à les imprimer (merci à nouveau Bruno pour ma dernière question XD)
Est-ce que cela répond à votre question? Combinations d'éléments dans un tableau
@wovano non parce que ce temps il est possible de dupliquer chaque élément
@wovano dans votre lien il n'est pas autorisé à avoir 1 1 1 ni même 1 1 2 mais ici c'est possible
Ah, d'accord, tu as raison à ce sujet @bruno (alors j'ai rétracté mon drapeau en double). Le terme "combinaisons" dans le titre était un peu trompeur, IMHO, puisque dans la signification classique (par exemple, lorsque vous parlez de combinaisons et de permutations), c'est différent.
Je ne connais aucun autre mandat pour le définir désolé xD
@Kkkkk, moi ni ...