Bonjour,
j'ai un projet à réaliser et dans celui-ci, je dois à un moment enregistrer les différentes combinaisons (k parmi n) dans une variable.
J'ai donc cherché un code pour faire ceci. J'ai utilisé ce code-ci : http://www.developpez.net/forums/d42...-combinaisons/ , qui affiche la bonne liste des combinaisons mais je souhaiterai stocker cette liste et non pas l'afficher directement.
Par exemple, pour 2 parmi 4, la liste affichée est bien
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 static int[] liste = new int[7]; static ArrayList<int[]> listefinale = new ArrayList<int[]>(); public static void partition(int index, int p, int n) { // construction recursive des listes possibles if (index >=p ) { // la liste est construite -> FIN System.out.println(Arrays.toString(liste)); listefinale.add(liste); return; } // ajoute un nouvel element candidat dans la liste // - sans ordre -> candidat: tous les elements // - avec ordre -> candidat: seulement les elements supérieurs au précédant int start=0; if (index>0) start=liste[index-1]+1; for(int i=start;i<n;i++) { liste[index]=i; partition(index+1, p, n); } }
[0, 1, 0, 0, 0, 0, 0]
[0, 2, 0, 0, 0, 0, 0]
[0, 3, 0, 0, 0, 0, 0]
[1, 2, 0, 0, 0, 0, 0]
[1, 3, 0, 0, 0, 0, 0]
[2, 3, 0, 0, 0, 0, 0]
mais je n'arrive pas à la stocker !
Le programme fait ensuite un dernier parcours et met dans la liste (cela ne me gêne pas, je n'ai qu'à arrêter la boucle avant pour laisser [2, 3, 0, 0, 0, 0, 0]) :
[3, 3, 0, 0, 0, 0, 0]
En effet, le contenu de listefinale se remplace à chaque fois par la dernière liste, voici le contenu de listefinale à la fin :
[3, 3, 0, 0, 0, 0, 0]
[3, 3, 0, 0, 0, 0, 0]
[3, 3, 0, 0, 0, 0, 0]
[3, 3, 0, 0, 0, 0, 0]
[3, 3, 0, 0, 0, 0, 0]
[3, 3, 0, 0, 0, 0, 0]
Donc si je supprime la liste inutile ([3, 3, 0, 0, 0, 0, 0]), il m'affiche uniquement la dernière liste, les 5 premières sont aussi remplacés, ce que je ne veux pas :
[2, 3, 0, 0, 0, 0, 0]
[2, 3, 0, 0, 0, 0, 0]
[2, 3, 0, 0, 0, 0, 0]
[2, 3, 0, 0, 0, 0, 0]
[2, 3, 0, 0, 0, 0, 0]
[2, 3, 0, 0, 0, 0, 0]
Quelqu'un pourrait-il m'aider avec ce petit problème, ça fait quelques heures que je cherche en vain
Merci
Partager