ImFaith
Messages postés57Date d'inscriptiondimanche 6 décembre 2009StatutMembreDernière intervention17 mars 2015
-
16 déc. 2013 à 00:17
ImFaith
Messages postés57Date d'inscriptiondimanche 6 décembre 2009StatutMembreDernière intervention17 mars 2015
-
16 déc. 2013 à 09:23
Bonjour,
j'aimerai construire un arbre comme suit: J'ai deux listes :
ChoixX={1,2,3}
ChoixY={1,2,4};
On a deux acteurs; X et Y; chaqu'un veut prendre un nombre d'éléments parmi sa liste, çàd X veut prendre soit : 1 , 2 ou 3 éléments : {1},{1,2},{1,2,3}
Y veut aussi soit prendre 1, 2 ou3 éléments comme suit : {1},{1,2},{1,2,4} à condition: les éléments pris par un acteur seront excluent des choix de deuxième acteur . Je veux construire cet arbre dont chaque noued représente : l'acteur, et les éléments à affecter.
Voici un essaye mais j'ai pas arrivé à construire cet arbre :
private void buildTree(DefaultMutableTreeNode racine,int Acteur1, int Acteur2, ArrayList<Integer> Actions1, ArrayList<Integer> Actions2){
if(Actions1.size() != 0 && Actions2.size() != 0){
for(int i = 0; i < Actions1.size(); i++){
String S = "(";
for(int h = 0; h <= i; h++){
S = S + Actions1.get(h)+",";
if(Actions2.contains(Actions1.get(h))){
Actions2.remove(Actions2.indexOf(Actions1.get(h)));
}
Actions1.remove(h);
}
S = S + ")";
DefaultMutableTreeNode rep = new DefaultMutableTreeNode(Acteur1+","+i+"," +S);
//Et une branche
for(int j = 0; j < Actions2.size(); j++){
S = "(";
for(int h = 0; h <= j; h++){
S = S + Actions2.get(h)+",";
if(Actions1.contains(Actions2.get(h))){
Actions1.remove(Actions1.indexOf(Acteur2.get(h)));
}
Actions2.remove(h);
}
S = S + ")";
DefaultMutableTreeNode rep2 = new DefaultMutableTreeNode(Cluster2+","+j+ ","+S);
//Cette fois, on ajoute les feuilles
/* for(int k = 1; k < 5; k++)
rep2.add(new DefaultMutableTreeNode("Sous-fichier enfant n°" + k));*/
rep.add(rep2);
if(Actions1.size() == 0){
rep.add(new DefaultMutableTreeNode("feuille"));
if(Actions2.size() == 0){
rep2.add(new DefaultMutableTreeNode("feuille"));
}
buildTree(racine,Acteur1, Acteur2, Actions1, Actions2);
Actions1 = (ArrayList<Integer>) this.Actions1.clone();
Actions2 = (ArrayList<Integer>) this.Actions2.clone();
}
racine.add(rep);
}
}
}
Est ce quelqu'un parmi vous a une réponse, j'en suis vraiment besoin. merci en avance.
ImFaith
Messages postés57Date d'inscriptiondimanche 6 décembre 2009StatutMembreDernière intervention17 mars 2015 16 déc. 2013 à 09:23
Bonjour KX;
merci pour votre attention. Oui, je veux que les acteurs prennent les éléments selon cet ordre. Par exemple: X peut prendre {1},{1,2},{1,2,3} et pas d'autre combinaisons. Et quand X choisi , Y doit choisir selon l'ordre les éléments non pas encore choisi par X. Si X choisi de prendre 2 éléments qui sont {1,2}, Y a qu'une possibilité : est de choisir un élément :{4}. Dans chaque noeud, un acteur choisi un nombre d'élements, le prochain noeuad représente les choix du deuxième acteur. On atteint les feuilles dans cet arbre, quand une liste est vide.
est ce que t'as des proposition, j'en ai vraiment besoin. merci bcp