Le mot le plus long

Fermé
nabil.choukri Messages postés 5 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 27 octobre 2016 - 14 mars 2016 à 13:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 mars 2016 à 22:13
Bonjour,

SVP ça fait une semaine que je cherche un algo qui me permet de générer toutes les combinaisons possibles à partir d'une liste des lettres !

Par exemple la liste suivante (A,B,C) doit me permettre d'obtenir le résultat suivant : AB,AC,BA,BC,CA,CB.

je trouve souvent des parties des programmes codées en Python, un langage que je connais pas donc j'aimerais que vous m'aidez :)

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
14 mars 2016 à 13:58
Bonjour,

Si tu as le programme en python, tu devrais pouvoir comprendre la logique et en déduire l'algorithme.

Le plus simple est de le faire de manière récursive.

Si 1 seule lettre : affichage de la lettre
Sinon, boucle pour choisir chacune des lettres, et on rappelle la fonction sur le tableau (moins le caractère).

Je te laisse mettre en ordre tout ça.
N'hésite pas à faire une proposition pour qu'on puisse te corriger.
0
nabil.choukri Messages postés 5 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 27 octobre 2016
14 mars 2016 à 15:35
Merci pour ta réponse :)

pour l'instant je vais te faire une proposition en algo :

Tab[]={a,b,c,d,e,f,g,h,i,j}
N=10 // la longueur ou le nombre de mes lettres

if (n==1) afficher tab[0]
else
for (i=0; i<N; i++)
// c'est là que je sais pas quoi faire :/ :(
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
17 mars 2016 à 22:13
Ce n'est pas de l'algo, mais du C, enfin ça y ressemble.
Sinon, tu n'as pas défini n.

Il faut faire déjà définir le prototype de la fonction :
listeCombinaison(tableau, taille, buffer)

Après réflexion, la fin de ta fonction est si n==0, tu affiches buffer
Sinon, tu parcours tous les éléments du tableau, tu supprimes l'élément du tableau, tu concatènes l'élément supprimé à la fin de buffer, tu appelles la fonction listeCombinaison avec une taille -1. Puis tu remets l'élément dans le tableau.
0