Extraire tous les éléments possibles d'un ensemble [Résolu/Fermé]

Signaler
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
-
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
-
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

5 réponses

Messages postés
16180
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 janvier 2021
2 775
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
1
Merci KX, je vais voir.

Cordialement,
Youness
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
1
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
Messages postés
16180
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 janvier 2021
2 775
"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"));
    }
}
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
1
Merci bien KX, c'est très utile et çà répond à ce que je veux.

Je vous remercie infiniment.

All the best,
Youness
Messages postés
63
Date d'inscription
mardi 4 juin 2013
Statut
Membre
Dernière intervention
6 février 2016
1
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