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

Langage Java Discussion :

Algorithme combinaisons d'éléments d'une liste


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Par défaut Algorithme combinaisons d'éléments d'une liste
    Bonjour à tous,
    J'ai un problème au niveau de la recherche d'un algorithme.
    J'ai un ensemble n d'éléments, un entier, et je dois enregistrer dans un tableau toutes les combinaisons possibles d'éléments, et ces combinaisons seront de taille inférieure ou égale à l'entier.
    Exemple:
    ensemble d'éléments : A,B,C,D
    entier : 2
    les combinaisons seront :
    A
    B
    C
    D
    AB
    AC
    AD
    BC
    BD
    CD

    Si quelqu'un peut me donner un début de solution, je ne vois pas du tout comment faire.
    Merci.

  2. #2
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    Pour ce genre de probleme, la recursivité est pas mal. Il faut prendre tous les elements puis additionner le premier aux suivants et ainsi de suite. Apres, il suffit de filtrer les profondeurs au dessus du max. Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
       public static void main(String[] args)
       {
          String[] ensemble = { "A", "B", "C", "D" };
          int profondeur = 10;
          displayEnsemble(ensemble, profondeur, 0, "", 0);
       }
     
       public static void displayEnsemble(String[] ensemble, int profMax,
             int profCourante, String prefix, int rang)
       {
          if (profCourante < profMax)
          {
             for (int i = rang; i < ensemble.length; i++)
             {
                System.out.println(prefix + ensemble[i]);
             }
     
             for (int i = rang; i < ensemble.length; i++)
             {
                displayEnsemble(ensemble, profMax, profCourante + 1, prefix
                      + ensemble[i], i + 1);
             }
          }
       }
    Avec ca, tu obtiens l'ensemble. Il ne manque plus qu'a le ranger si besoin...

    a+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3
    Par défaut
    Merci beaucoup, ça marche impec !!
    A+

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

Discussions similaires

  1. Obtenir la liste des combinaisons de p éléments d une liste de n éléments?
    Par Stéphane Nadry dans le forum Général Python
    Réponses: 7
    Dernier message: 18/02/2008, 20h16
  2. [debutant] insertion d'éléments dans une List
    Par gwenou60 dans le forum Composants
    Réponses: 1
    Dernier message: 05/12/2005, 09h59
  3. contrôler l'absence d'un élément dans une liste donnée
    Par gendalf37 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/09/2005, 10h02
  4. [CSS]Changer l'interligne des éléments d'une liste à puces
    Par khany dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/03/2005, 13h57
  5. Réponses: 2
    Dernier message: 11/01/2005, 14h10

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