Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3050 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Recursion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recursion

n°1339107
daark
Posté le 04-04-2006 à 19:55:35  profilanswer
 

Bonjour tout le monde,
 
Je vous expose mon probleme :
J’ai une table de X lignes contenant chacune une cellules de Y possibilitées. Je voudrais developper (En Delphi 5 sur WinXp pro), une fonction me permettant d’obtenir toute les combinaisons possibles.
 
Exemple :
Table                                                    Combinaisons désirées:
Lignes              Cellules
A                      1;2;3;                ->         A1        A1        A1        A1        A1        A1        A1  …
B                      2;                     ->         B2        B2        B2        B2        B2        B2        B2    …
C                      1;                     ->         C1        C1        C1        C1        C1        C1        C1  …
D                      1;2;3;                ->         D1        D1        D1        D2        D2        D2        D3  …
E                      1;2;3;                ->         E1        E2        E3        E1        E2        E3        E1   …
 
Il est clair que la solution passe par une fonction récursive, mais je n’arrive pas à mettre le doigt sur la logique à suivre.
 
J’ai pour l’instant développer l’algo suivant (Naturellement il ne marche pas) :
 
Procedure RecursSearch(TableOrigine, TableSauvegarde)
   //Boucle sur le nombre de possibilités contenu dans la cellule (A1, A2, A3 : i =3)  
   Pour i = 0 tant que i < TableOrigine[PosCourante].NombreContenu alors    
      //On Copie l’entrée courante (A1, D3, E2, ...) dans la table de sauvegarde
      TableSauvegarde.NouvelEnregistrement.IndexChoisi <- TableOrigine[PosCourante].Index[i]
         //Si il n’y a plus de ligne on à un combinaison complete, sinon on boucle
         Si TableOrigine[PosCourante].Fin = faux alors                                                    
            TableOrigine.PosSuivante      //Saut à la ligne suivante dans la table d’origine
            RecursSearch (TableOrigine, TableSauvegarde)                                       //Recursion
         Fin Si
   Fin Pour
Fin Procedure
 
Quelqu’un saurais-t’il, par hasard, ou trouver un exemple d’algorithme pouvant résoudre ce probleme sur lequel je m’arrache les cheveux depuis déjà beaucoup trop longtemps ??
 
Merci d’avance
Bye

mood
Publicité
Posté le 04-04-2006 à 19:55:35  profilanswer
 

n°1339212
nargy
Posté le 04-04-2006 à 22:35:00  profilanswer
 

ton exemple est pas logique (ou confu?)
 
a quoi correspondent les combinaisons désirées?
 
peut tu donner un exemple plus clair et plus petit, avec juste AB et 12?

n°1339248
Trap D
Posté le 04-04-2006 à 23:02:15  profilanswer
 

je crois que j'ai compris.  ;)  
Je ferais ça avec une file et un marqueur de fin de file :
 
intialisation de l'algo
  on met dans la file le contenu de toutes les cellules de la première ligne
  on met le marqueur de fin de file
fin de l'intialisation
 
algo proprement dit
 
pour toutes les lignes li restant à  faire
  tant que l'element e_f extrait de la file est différent du marqueur de fin de file faire
    pour tous les cellules c_i de la ligne l_i faire
      créer un nouvel élement n_e en ajoutant a la fin de e_f l'élément c_i
      mettre dans la file n_e
    fin pour
  fin tant que
  mettre dans la file le marqueur de fin de file
fin pour
 
A la fin, tu as dans la file tous les éléments voulus. (si j'ai bien compris ce que tu voulais). :pt1cable:

n°1339271
daark
Posté le 04-04-2006 à 23:24:30  profilanswer
 

Ok, merci pour le conseil, je vais tester ca.
 
Je redonne un exemple sous forme d'arbre si ca peux aider :
 
La liste des combinaisons que je désire ressemble à ca :  
                        A1                  A2
                  /               \           ...
                B1               B2    
      /          |      \         ...
     C1        C1    C1
     |           |      ...
     D1        D1  
  /  |  \       |   \   \
E1 E2  E3   E1 E2  E3
 
Sachant que le chemin en rouge représente une des combinaisons souhaité.

n°1339729
Trap D
Posté le 05-04-2006 à 14:57:27  profilanswer
 

Alors, ça donne quoi ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Recursion

 

Sujets relatifs
[C] quelle est la profondeur de recursion maximale ??recursion, je ne comprend pas cet algo
iteration --> recursion aide algo simple[YACC] Problème de récursion à droite
Plus de sujets relatifs à : Recursion


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)