Extraire tous les éléments possibles d'un ensemble

Résolu/Fermé
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 - Modifié par neocol le 13/03/2014 à 20:41
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 - 15 mars 2014 à 19:46
Bonjour, J'ai besoin de votre aide, pour ce code :
Vector<String> tempCandidates1 = new Vector<String>(); //vecteur temporaire
String str1, str2;
StringTokenizer st1, st2;

str1= " 1 2 3";
st1 = new StringTokenizer(str1); // j'obtiens "1" " 2" "3" , c'est bien pour moi

str2 = st2.nextToken();
while(st2.hasMoreTokens())
{
tempCandidates1.add(str2 + " " + st2.nextToken().trim());
}

Avec ce code j'obtiens des résultats comme ça :
tempCandidates1 = [ 1 2, 1 3]

C'est bien, Mais SVP comment faire pour avoir le dernier élément restant [2 3] ?

En gros comment faire pour que : à partir d'un ensemble de n éléments on obtient toutes le possibilités de (n-1) éléments.

P.S. : pour un ensemble de N éléments, on aura N possibilités de combinaison des (N-1) éléments.
Exemple: pour l'ensemble {1,2,3}( N=3) on aura {1,2};{1,3};{2,3} (3 possibilités de combinaisons de 2 éléments).

All the Best,
Youness
A voir également:

5 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
13 mars 2014 à 22:44
0
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 1
13 mars 2014 à 23:25
Merci KX, je vais voir.

Cordialement,
Youness
0
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 1
15 mars 2014 à 01:12
Salut KX, j'ai vu ton code mais je ne suis pas à ce niveau pour comprendre tout çà.

J'ai besoin toujours de votre aide:

A partir d'un ensemble de N éléments, je veux récupérer toutes les combinaisons possibles de N-1 éléments mais trié,
ça veut : si {A,B,C} je dois récupérer : {{A,B},{A,C},{B,C}}, les autres éléments restants comme {C,A} j'en veux pas.

Du coup j'ai pensé à chaque itérations du vecteur {A,B,C} j'enlève un élément ,
si je fais :
Iterator<String> it = myVectorString.iterator();
for (int i = 0; i < myVectorString.size() && it.hasNext(); i++) {
it.next();
it.remove(); }
je récupére bien {B,C} pour la première fois, mais après puisque le myVectorString a changé(puisqu'on a enlevé un élément), alors là je reste coincé, je ne sais plus quoi faire.

Je ne sais pas comment faire : quand on enlève un élément, envoie les autres dans un autre vecteur.

J'ai vraiment besoin de votre aide, je suis presque dans ma dernière phase de mon projet, et çà repose sur çà.
All the best,
Youness
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
15 mars 2014 à 10:50
"A partir d'un ensemble de N éléments, je veux récupérer toutes les combinaisons possibles de N-1 éléments mais trié"

En fait c'est un cas particulier très simple, tu as juste à trier tes N éléments, et à les copier N fois en enlevant à chaque fois le iè élément tout en conservant l'ordre.

public class Test
{
    public static <E> List<E> remove(List<E> list, int i)
    {
        List<E> copy = new ArrayList<E>(list);
        copy.remove(i);
        return copy;
    }
    
    public static <E> List<List<E>> split(List<E> list)
    {
        List<List<E>> result = new ArrayList<List<E>>(list.size());
        
        for (int n = list.size(), i = n - 1; i >= 0; i--)
            result.add(remove(list, i));
        
        return result;
    }
    
    public static <E> List<List<E>> test(E...tab)
    {
        List<E> list = Arrays.asList(tab);
        return split(list);
    }
    
    public static void main(String[] args)
    {
        // [[A, B, C, D], [A, B, C, E], [A, B, D, E], [A, C, D, E], [B, C, D, E]]
        System.out.println(test("A", "B", "C", "D", "E"));
    }
}
0
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 1
15 mars 2014 à 14:05
Merci bien KX, c'est très utile et çà répond à ce que je veux.

Je vous remercie infiniment.

All the best,
Youness
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neocol Messages postés 63 Date d'inscription mardi 4 juin 2013 Statut Membre Dernière intervention 6 février 2016 1
15 mars 2014 à 19:46
Bonjour KX, j'ai reformulé votre programme à mes besoins et du coup je coup je stocke les éléments que je génére dans une ArrayList<String>,
Je trouve des éléments :
Array_L1: [1, 3]
Array_L1: [1, 4]
Array_L1: [3, 4]

S'il vous plaît j'ai deux petites questions, si çà ne vous dérange pas,
Je veux regrouper les éléments générer de cette manière :
Les stocker dans un vector de cette façon
Vector : [1 3], [1 4], [3 4]

pour pouvoir les stocker dans un vector et ensuite faire comparaison avec un autre Vector que j'ai comme résultat.

int w=0;
do{
str3 = array_L1.get(w);
MyVectorString.add(str3);
w++;
}while(w<array_L1.size());

je récupère un vector : [ [1,3], [1,4], [3,4] ]

Je veux avoir à la fin vector : [ 1 3, 1 4, 3 4 ]

Merci infiniment,
Youness
0