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

SL & STL C++ Discussion :

Ensemble des partitions d'une liste


Sujet :

SL & STL C++

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut Ensemble des partitions d'une liste
    Salut,

    Je cherche un algo efficace (j'en ai déjà un qui me semble loin d'être optimal) pour obtenir à partir d'une liste d'entiers set<int> la liste des partitions de cette ensemble dont la taille est inférieure à un entier fixé pMax sous forme d'un set<set<int>>.

    Par exemple si ma liste initiale est {1, 3, 5, 8} et pMax = 2, je voudrais que l'algo me donne : {{1}, {3}, {5}, {8}, {1,3}, {1,5}, {1,8}, {3,5}, {3,8}, {5,8}}

    Merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    C'est un problème d'algorithmique, pas de C++.
    A priori une approche naïve en n² ne semble pas être une si mauvaise solution.

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par loufoque Voir le message
    C'est un problème d'algorithmique, pas de C++.
    A priori une approche naïve en n² ne semble pas être une si mauvaise solution.
    Disons que comme la STL contient pas mal d'algos il y en a souvent un qui peut aider à faire ces choses là en limitant le codage.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    La bibliothèque standard a de quoi générer toutes les permutations, mais pas toutes les partitions.

    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
    std::set<int> set;
    std::set< std::set<int> > multiset;
     
    foreach(int a, set)
    {
         std::set<int> tmp;
         tmp.insert(a);
     
         foreach(int b, set)
         {
             multiset.insert(tmp);
             tmp.insert(b);
         }
         multiset.insert(tmp);
    }

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 330
    Points : 85
    Points
    85
    Par défaut
    la code précédent ne fait que des paires de valeurs si je ne m'abuse...

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Je t'invite à relire le code.
    Il y avait un petit cas que j'avais oublié, mais ça n'insère pas que des paires...

Discussions similaires

  1. Réponses: 15
    Dernier message: 28/06/2011, 17h07
  2. obtenir la liste des partitions d'une table
    Par Sh4dow49 dans le forum Oracle
    Réponses: 6
    Dernier message: 28/08/2009, 16h18
  3. Lister l'ensemble des occurences d'une liste
    Par djulz dans le forum Excel
    Réponses: 6
    Dernier message: 21/04/2008, 17h14
  4. [Lisp] Suppression des parenthèses dans une liste
    Par bourdaillet dans le forum Lisp
    Réponses: 3
    Dernier message: 19/12/2004, 21h02
  5. [langage] Comment rajouter des champs dans une liste
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2003, 14h09

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