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

Résolu
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -  
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
0
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci KX, je vais voir.

Cordialement,
Youness
0
neocol Messages postés 63 Date d'inscription   Statut Membre Dernière intervention   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
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   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
0