IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Toutes les combinaisons possible d'un tableau


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Points : 88
    Points
    88
    Par défaut Toutes les combinaisons possible d'un tableau
    Hello guys,

    J'aurais aimé avoir votre avis sur la bonne façon de parcourir un tableau, je vais expliqué mon besoin à partir d'un exemple ça sera bien plus parlant.

    J'ai le tableau suivant en entrée :

    a b c

    Je voudrais obtenir toutes les combinaisons possible depuis ce tableau d'entrée, pour cet exemple simple cela donnerait :

    a b c
    ab c
    a bc
    abc

    Cela peut peut-être vous sembler évident à première vue mais le code que j'ai implémenté me semble assez complexe, quel est selon vous la meilleure façon de faire?

    Merci pour vos réponses.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Utiliser la recursivité apporte une solution assez simple.

    On trouve toutes les combinaisons de abcd à partir de celles obtenues pour abc:
    pour une combinaison de abc composée de n sous-groupes, on peut mettre d dans chacun des n sous-groupes ou le mettre dans un sous-groupe séparé.
    Ainsi pour une combinaison au niveau i avec n sous-groupes, on aura n+1 combinaisons au niveau i+1.

    Les premier pas de recursions donnent ceci (le caractère "|" est la separateur de sous-groupes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Pour a    : 1 combinaison ->  a
     
    Pour ab   : a      -> ab      + a|b
     
    pour abc  : ab     -> abc     + ab|c
                a|b    -> ac|b    + a|bc     + a|b|c
     
    pour abcd : abc    -> abcd    + abc|d
                ab|c   -> abd|c   + ab|cd    + ab|c|d  
                ac|b   -> acd|b   + ac|bd    + ac|b|d
                a|bc   -> ad|bc   + a|bcd    + a|bc|d
                a|b|c  -> ad|b|c  + a|bd|c   + a|b|cd  + a|b|c|d
     
    pour abcde: ...
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre régulier Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Points : 88
    Points
    88
    Par défaut
    Works fine. Thank u .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Stocker dans un tableau toutes les combinaisons possibles entre plusieurs tableaux.
    Par gui-yem dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 19/03/2014, 15h22
  2. Toutes les combinaisons possibles d'un tableau
    Par absot dans le forum Langage
    Réponses: 7
    Dernier message: 13/09/2012, 21h23
  3. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  4. trouver les combinaisons possibles d'un tableau ?
    Par titoumimi dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 20/09/2006, 20h29
  5. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo