Purtroppo tale configurazioni mi arriva e non posso modificare a priori. Posto la prova che ho fatto ma non riesco a generare tutte le combinazioni, sposto semplicemente i quattro valori 1 nelle diverse posizioni. Sapete aiutarmi per generare tutte le combinazioni (96 mila circa) senza, ovviamente, ripetizioni?
Grazie ancora

codice:
import java.util.*;

public class ProvaSwitch {

	protected static int[] x;
	protected static int cont = 0;

	public static void main(String[] args) {
		x = new int[40];
		x[0] = 1;
		x[1] = 1;
		x[2] = 1;
		x[3] = 1;
		stampaArray(x);
		System.out.println();
		long t1 = System.currentTimeMillis();	
		for(int i=0; i<4; i++) {
			scambia();
		}
		long t2 = System.currentTimeMillis();
		long delta = t2  - t1;
		System.out.println();
		System.out.println("TEMPO ALGORITMO: " + delta);
		System.out.println("PERMUTAZIONI: " + cont);
	}


	public static void scambia() {
		for(int i=0; i<x.length; i++) {
			cont++;
			int tmp = x[i];
			if(i!=x.length-1) {
				int next = x[i+1];
				x[i+1] = tmp;
				x[i] = next;
				stampaArray(x);
				System.out.println();
			}
		}		
	}

	public static void stampaArray(int[] x) {
		for(int i=0; i<x.length; i++) {
			System.out.print(x[i] + " ");
		}
	}		
	
}