Comment Obtenir toutes les combiniaisons possibles

Résolu
ImFaith Messages postés 57 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 17 mars 2015 - 20 nov. 2012 à 19:30
ImFaith Messages postés 57 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 17 mars 2015 - 21 déc. 2012 à 17:01
Bonjour tout le monde ;

J'ai un problème dans le calcul des combinaisons possibles. Prenant cet exemple :
X1 = {(1), (1,2)}
X2 = {(2), (1,2)}
X3 = {(3),(3,4,5)}
X4 = {(4), (4,5)}
X5 = {(4,5)}

Je dois calculer les combinaisons possibles de tous les ensembles sauf un ensemble, par exemple :
toutes les combinaisons des ensembles X2, X3, X4, X5. Dans ce cas on a 8 combinaisons :
1) {(2),(3),(4),(4,5)}
2) {(2),(3),(4,5),(4,5)}
3) {(2),(3,4,5),(4),(4,5)}
4) {(2),(3,4,5),(4,5),(4,5)}
5) {(1,2),(3),(4),(4,5)}
6) {(1,2),(3),(4,5),(4,5)}
7) {(1,2),(3,4,5),(4),(4,5)}
8) {(1,2),(3,4,5),(4,5),(4,5)}

est ce quelqu'un peut me dire comment faire ça en java ? j'ai essayé de programmer mais j'ai pas réussi !!
merci d'avance.

6 réponses

cs_jojolemariole Messages postés 519 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 19 décembre 2016 25
21 nov. 2012 à 14:47
Salut,

Au niveau de l'algorithme tu es bien parti mais il ne faut pas réinitialiser la liste après chaque appel récursif ! Il faut seulement enlever le dernier élément ajouté.

Je te suggère de remplacer :
ArrayList> list

par :
Stack<List> stack


Puis de remplacer :
list.add(PlayerCoalitions.get(index).Coalitions.get(j));

par :
stack.push(PlayerCoalitions.get(index).Coalitions.get(j));


Et enfin :
if(index > = PlayerCoalitions.size() ){
  this.Combinaison.add(list);	
 }

par :
else {
combinaison.add(new ArrayList<List>(stack));
}


Par ailleurs, je remarque que tu n'utilises pas les interfaces quand c'est possible, tu n'utilises pas les concepts objets et pas non plus les conventions de nommage habituelles.
Rejoignez-nous