Bonsoir,
Je cherche à générer des sous ensembles d'un ensemble fini d'Arete (objet). Ceci est dans le but d'étudier chaque sous-ensemble par la suite. En fouinant un peu j'ai trouvé cet algorithme récursif :
Le problème c'est qu'il est fait avec des caractères. Je bloque principalement à cette ligne // ajoute: le caractere seul devant chaque sous-combinaison
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
25
26
27
28
29
30
31
32
33 public static Stack<String> combination(Stack<Character> characters) { Stack<String> result = new Stack<String>(); // la liste des carateres est vide => resultat vide if (characters.isEmpty()) return result; // retire le 1er caractere le la liste Character first = characters.remove(0); // calcule les sous-combinaisons avec les caracteres restants Stack<String> subcombination = combination(characters); // ajoute: le caractere seul result.add(first.toString()); // ajoute: le caractere seul devant chaque sous-combinaison for(String s:subcombination) result.add(first+s); // ajoute: les sous-combinaisons result.addAll(subcombination); return result; } public static void main(String[] args) { Stack<Character> stack = new Stack<Character>(); stack.push('A'); stack.push('B'); stack.push('C'); Stack<String> resultats = combination(stack); for(String s:resultats) System.out.println(s); }
for(String s:subcombination)
result.add(first+s);
Je n'arrive pas à obtenir par exemple : [12, 23, 53, 14] un sous-ensemble où chaque chiffre correspond aux sommets de l'arête. Merci d'avance !
Partager