Générer une liste d'objets
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 :
Code:
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);
} |
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
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 !