Accueil > Forum > > > > [casse-tête]Lister toutes les combinaisons possibles sans ordre
[casse-tête]Lister toutes les combinaisons possibles sans ordre
jeudi 22 juillet 2004 à 18:20:36 |
[casse-tête]Lister toutes les combinaisons possibles sans ordre

willbill
|
Salut à tous ! Je cherche depuis ce matin l'algorithme qui permettrai de lister toutes les combinaisons possibles, sans ordre (c'est à dire que ABE équivaut à EBA) de n lettres (n=8 maximum) Prenons le pire cas: c'est à dire que je choisi 8 lettres (de A à H) et je dois lister toutes les combinaisons de 1,2,3,4,...,8 lettres possibles avec les lettres choisies. il existe 2^8 possibilités (256) par exemple pour 4 lettres ABCD, il y a 0 combinaisons de 0 lettres il y à 4 combinaisons de 1 lettres (A,B,C,D) il y à 6 combinaisons de 2 lettres (AB,AC,AD,BC,BD,CD) il y à 4 combinaisons de 3 lettres (ABC,ABD,ACD,BCD) il y à 1 combinaisons de 4 lettres (ABCD) Je ne sais pas à l'avance de combien de lettres je dispose. j'ai essayé de faire un système avec des for() et c'est assez prise de tête. alors j'ai pensé à un système aléatoire qui fais des combinaisons et qui s'arrete quand il en à trouvé 256 distinctes, mais ça risque d'etre lourd et long... je vous remercie beaucoup si vous connaissez la solution ou pouvez m'aiguiller. Je précise que je travaille en SQC (autant dire en C) ++ BiLLKiLL
|
|
jeudi 22 juillet 2004 à 19:51:40 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

AlexMAN
|
"il y à 1 combinaisons de 4 lettres (ABCD)" il ya bocou plus de combinaisons ! Si j'ai bien compris ce ke tu veux faire, ya ABCD, ABDC, BADC....Enfin bocou koi !
Va sur vbfrance.com, 2sources sont presentes : une de Proviste et l'autre de je ne sais ki..En espérant ke ca puisse t'aider..
++
|
|
jeudi 22 juillet 2004 à 20:05:44 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

Stepharcher
|
Tu as besoin du triangle de Pascal. Ca donne un truc comme ça 0 -> 1 1 -> 1 1 2 -> 1 2 1 3 -> 1 3 3 1 4 -> 1 4 6 4 1 ( <- ça c'est ton cas ) j'explique : au niveau des extrémités, c'est toujours 1, sinon pour chaque élement, tu prends celui qui est au dessus de lui et tu l'additionnes avec celui qui est au dessus à gauche... C'est facile à faire.  Stéph 
|
|
jeudi 22 juillet 2004 à 20:06:55 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

Stepharcher
|
Tu peux aussi regarder sur http://www.mjc-andre.org/pages/amej/glossair/entrees/pascalt.html  Stéph 
|
|
jeudi 22 juillet 2004 à 21:09:01 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

willbill
|
AlexMAN: J'ai précisé que l'ordre ne m'intéressai pas. donc ABCD=ACBD dans mon cas Stepharcher: Sauf erreur de ma part, le triangle de Pascal me permet de compter le nombre de possibilités totales, mais moi je veux lister ces possibilités, pas seulement savoir combien il en existe (cela peut également etre fait tres simplement avec les formules de Combinaisons utilisées en probabilité). Si le triangle me permet de les lister, alors j'aimerai plus de détails et je m'excuse pour la phrase précédente. Merci à tous les 2 pour vos réponses ;) BiLLKiLL 
|
|
jeudi 22 juillet 2004 à 21:56:11 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

cosmobob
|
Réponse acceptée !
salut ;) 'il existe 2^8 possibilités (256)' => yen a 255, vu que tu exclus le cas ou t'as 0 lettre. ca se fait de facon pas trop compliquée recursivement sinon.
tu cherches a trouver les combinaisons de n lettres parmis 8, sachant que tu connais les combinaisons de n-1 lettres parmis 8.
E = ensemble des combinaisons de n-1 lettres parmis 8. L = ensemble vide;
pour X dans E faire : pour i entre 1 et 8 faire : si i n'est pas dans X et (X U i) n'est pas dans L : L = { L, (X U i) } fin pour; fin pour;
a toi de programmer la fonction qui gere les ensembles. sinon ya deja une gestion des ensembles dans la librairie standard du C++, a toi de la voir plus précisement...
sinon tu peux te debrouiller avec des tableaux, vu que tu connais par avant la taille de ta liste L ( sa taille est C(n,p) = n! / (p! . (n-p)!) pour les combinaisons de p lettres parmis n)
a+ ;)
|
|
jeudi 22 juillet 2004 à 23:04:26 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

dletozeun
|
ET si tu faisait un arbre? Fo essayer d'adapter au c ensuite...
|
|
vendredi 23 juillet 2004 à 09:42:14 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

willbill
|
dletozeun: la méthode proposée par cosmobob s'assimile à un arbre, puisque si j'ai bien compris, on prend chacun des éléments de l'ensemble précécédent comme point de départ pour trouver l'ensemble cherché. Je vais chercher la manière la plus simple de gérer les ensembles ou bien faire par tableau. Mais je suis en C et non en C++ donc je ne sais pas si ça existe aussi. Merci beaucoup Cosmo !! Je vous donne des news bientôt ;) BiLLKiLL 
|
|
vendredi 23 juillet 2004 à 12:15:00 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

willbill
|
A prioris ça va marcher, merci cosmob, je vous filerai le code quand j'aurai terminé. je marche avec un tableau de structures. 
|
|
lundi 26 juillet 2004 à 10:31:59 |
Re : [casse-tête]Lister toutes les combinaisons possibles sans ordre

willbill
|
Je fais du C que depuis quelques jours donc n'y allez pas les yeux fermés ! // Struct.c :: Utilisation des structures
#include <stdio.h> #include <malloc.h> #define nb_ci 8 /*nombre de choix possibles/* #define nb_cases 70 /* correspond environ au nombre de combinaisons de nb_ci/2 dans nb_ci */ #define lg_cases 15 /*correspond environ à 2*nb_ci*/ typedef char *chaine; typedef struct ens { char cb[nb_cases][lg_cases]; int card; }ens2; typedef ens2 *Pens;
/* fonctions de calculs */
unsigned short facto(int n) { unsigned short result=1; int i; for (i=n;i>0;i--) { result=result*i; } return result; } /*################*/ unsigned short Cnp(int p,int n) //Calcule le nombde de combinaisons sans ordre si on prent P éléments parmis N avec 0<=P<=N { unsigned short somme=(facto(n)/(facto(p)*facto(n-p))); return somme; }
/* Corps du programme */ Pens T[nb_ci]; int main(int argc, char* argv[]) { printf("\nDébut du Programme;");
/* Raisonnement par récurrence */ /* Conditions initiales */ T[0]=(ens2*)malloc(sizeof(ens2)); T[0]->card=Cnp(0,nb_ci); strcpy(T[0]->cb[0],""); /* Transmission */ int I,J,K,i,j,start,somme; char combinaison[lg_cases],plop[lg_cases],last_nb[3]; somme=0; for(I=1;I<=nb_ci;I++) { T[I]=(ens2*)malloc(sizeof(ens2)); T[I]->card=Cnp(I,nb_ci); printf("\n Il y à %u façons de prendre %d Elements parmis %i :",T[I]->card,I,nb_ci); somme=somme+T[I]->card; i=0; for(J=0;J<(T[I-1]->card);J++) { /* On récupère le dernier numéro de la chaine pour pouvoir partir du numero suivant (ainsi on evite 2#2 en passant à 2#3 direct) */ sprintf(plop,"%s",T[I-1]->cb[J]); start=0; sprintf(last_nb,""); for(j=0;j<(strlen(plop));j++) { if(plop[j]=='#') {sprintf(last_nb,"");} else {sprintf(last_nb,"%s%c",last_nb,plop[j]);} } start=atoi(last_nb)+1; /*printf("\n Dep:%i",start); */ for(K=start;K<=nb_ci;K++) { if(I==1) {sprintf(combinaison,"%d",K);} else {sprintf(combinaison,"%s#%d",(T[I-1]->cb[J]),K);} strcpy(T[I]->cb[i++],combinaison); printf("\n%s",combinaison); } } } printf("\n\n %d resultats trouvés !",somme); /* Libération de la mémoire pour tous les tableaux */ for(I=0;I<=nb_ci;I++) { free(T[I]); } printf("\nMémoire libérée;\nFin du programme;\n"); return 0; }
|
BiLLKiLL 
|
|
Cette discussion est classée dans : lister, lettres, tête, combinaisons, possibles
Répondre à ce message
Sujets en rapport avec ce message
trouver les combinaisons possibles [ par zinou76 ]
Bonjour tt le monde,je cherche un algorithme pour calculer et lister tt les combinaisons possibles de n éléments d'un ensemble E de x éléments tel que
combinaisons possibles d'une liste [ par asmv ]
bonjourje suis perdu, qui peut m'aiderquestion : comment lister toutes les combaisons possibles de 2 à 5 numeros d'une serie pouvant aller de 6 à 20la
lister tous les combinaisons de k elements [ par mohamed123 ]
bonjour,j'ai besoin d'un programme qui liste toute les combinaisons possibles de taille k dans un ensemble de taille n.Cnp {l'ensemble peut etre {1,
Tester toutes les combinaisons possibles [ par blue01 ]
Bonjour tout le monde, depuis un moment je cherche a pouvoir tester toute les possibilités de différentes combinaisons par exemple pour faire toute l
générer toutes le combinaisons possibles d'une chaîne de caractères [ par tuvistavie1989 ]
Bonjour ! Je suis étudiant et je débute en programmation ... Je voudrais en fait créer un programme pour trouver un mot en générant toutes les combin
Empêcher la saisie... [ par enoitnaillal ]
Bonjour, Existe-il un moyen d’empêcher la saisie (avec cin) de caractère autre que les lettres minuscules ? Et est-ce possible lorsqu'on tape plusieur
le calcul de la complexité [ par boualiasma ]
Bonjour, Quelle est la complexité au pire de cas pour le calcul de toutes les combinaisons possibles pour n caractères à partir de taille 2 jusqu'à
Winforms, et dll sous visual C++ [ par lucyhle ]
Bonjour, Tout d'abord j'utilise comme IDE Visual C++. J'aimerais créer une dll pour notepad++ mais avec des jolies fenetres, boutons listes déroulan
utilisation des boites aux lettres sous unix [ par amme88 ]
Bonjour, j'ai un petit problème en programmation si quelqu'un peux m'aider , ben je programme en utilisant java sous UNIX, alors mon problème et le
Position dans un QTextEdit [ par bny ]
Bonjour, je fais présentement une interface qui affiche une très longue chaîne de caractère (100 000 lettres collées, sans espace) dans un QTextEdit (
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : CXIMAGERE : CXIMAGE par rt15
Cliquez pour lire la suite par rt15
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|