Bonjour,
Je souhaite écrire une fonction récursive permettant de me fournir toutes les combinaisons possibles sans répétition.
Sans répétition c'est-à-dire si j'ai cette combinaison [1,2,3], je ne dois plus avoir celles là [1,3,2] && [3,1,2] && [2,3,1].
En utilisant ce code :
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
34
35
36
37 public class GreenTest { static int n = 10; static int p = 3; static boolean ordered = true; // liste construite par la recursion static int[] liste = new int[p]; // construction recursive des listes possibles public static void partition(int index) { if(index >= p) { // la liste est construite -> FIN System.out.println(Arrays.toString(liste)); return; } int start=1; if(ordered && index>0) { start=liste[index-1]+1; } for(int i=start;i<n;i++) { liste[index]=i; partition(index+1); } } public static void main(String[] args) { partition(0); } }
j'arrive à obtenir un résultat un peu similaire à mon besoin : Par exemple pour une combinaison avec deux chiffre allant de 1 à 9
pour 3 chiffres :
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
34
35
36
37 [1, 2] [1, 3] [1, 4] [1, 5] [1, 6] [1, 7] [1, 8] [1, 9] [2, 3] [2, 4] [2, 5] [2, 6] [2, 7] [2, 8] [2, 9] [3, 4] [3, 5] [3, 6] [3, 7] [3, 8] [3, 9] [4, 5] [4, 6] [4, 7] [4, 8] [4, 9] [5, 6] [5, 7] [5, 8] [5, 9] [6, 7] [6, 8] [6, 9] [7, 8] [7, 9] [8, 9]
Maintenant ce que je veux c'est d'avoir une fonction récursive qui me fournit toutes les combinaisons possibles
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 [1, 2, 3] [1, 2, 4] [1, 2, 5] [1, 2, 6] [1, 2, 7] [1, 2, 8] [1, 2, 9] [1, 3, 4] [1, 3, 5] [1, 3, 6] [1, 3, 7] [1, 3, 8] [1, 3, 9] [1, 4, 5] ........... [6, 7, 9] [6, 8, 9] [7, 8, 9]
suivant une liste de chiffre donnée ou le nombre de caractères (2 chiffres, 3 chiffres .....) pour les combinaisons pourra varier de 2 à 10 aussi.
Désolé pour la longueur et Merci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public List<Integer> listeCombinaison(List<Integer> maListe, int p) { //ou p designe le nombre de caractères pour la combinaison et maListe la liste contenant les valeurs à combiner. }
Partager