Bonjour,
En fait j'ai un tableau de taille indéfini qui contient des 1 ou des 0.
Exemple : table[]={1,1,1,1}
Sur cet exemple mon objectif est de générer tous les binaires dans cet ordre :
1000, 0100, 0010, 0001, 1100, 1010, 1001, 0110, 0101, 0011, 1110, 1101, 1011 et enfin 0111.
Exemple2 : table2[]={1,1,0,1}
Et sur celui ci on a un élement à 0 donc il ne faut pas les générer du coup ça donne:
1000, 0100, 0001, 1100, 1001, 0101, 1101.
A l'heure actuel je ne sors pas les bons résultats, et je ne tiens pas compte de la longueur du tableau.
J'espère que vous pourrez m'aider.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 public class Combinaison { int table[]={1,1,1,1}; int n = table.length; int[] table1 = new int[table.length]; public int numberOfOne(){ int numberOfOne=0; for (int i=0; i< table.length; i++) if(table[i] == 1) numberOfOne++; return numberOfOne; } public void combi(){ int loop = 0; while(loop <= numberOfOne()){ int count = 0; int t=0; for(int i=0; i < table.length ; i++) table1[i] = 0; for(t=0; t < table.length ; t++){ if(table[t] == 1){ table1[t] = 1; count ++; } if (count == loop) break; } while (t<table.length){ System.out.println(); for(int i=0; i < table.length ; i++) System.out.print(table1[i] + "\t"); table1[t] = 0; t++; while ( t < table.length && table[t] == 0 ) t++; if (t < table.length ) table1[t] = 1; } loop ++; } } public static void main(String[] args) { Combinaison c = new Combinaison(); c.combi(); } }
Partager