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.


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();
 
	}
 
}
J'espère que vous pourrez m'aider.