Ci sono riuscito...

Questo è un metodo che, dato un array di n caratteri (in questo caso array di int) e un intero k,
genera tutte le possibili disposizioni semplici degli n caratteri dell'array su k posizioni, memorizzandole in una lista di array.


codice:
import java.util.Arrays;
import java.util.ArrayList;

class Disp {

//disposizioni semplici di n elementi su k posizioni
	public static void dispSemplici(int[] arr, int k, ArrayList<char[]> out) {
		dispSemplici(arr,k,out,new String());		
	}
	
//metodo di supporto per dispSemplici
	public static void dispSemplici(int[] arr, int k, ArrayList<char[]> out, String a) {
		if (a.length() == k) {
			char[] temp = a.toCharArray();
			out.add(temp);
			//System.out.println("debug ");   //debug
			//stampaArrayList(out);           //debug
			return;
		}
		for (int i = 0; i < arr.length; i++) {
			dispSemplici(arr,k,out,a+arr[i]);
		}
	}

//metodo per la stampa di ArrayList<char[]>
	public static void stampaArrayList(ArrayList<char[]> arrList) {
		for (char[] temp : arrList)
			System.out.println(Arrays.toString(temp));
	}

//metodo main di prova
public static void main(String[] args) {
		int[] alf = {1,0};
		ArrayList<char[]> out = new ArrayList<char[]>();
		dispSemplici(alf,3,out);
		System.out.println("dispSemplici");
		stampaArrayList(out);
	}
}
spero possa essere di aiuto a qualcuno...
come potete vedere il metodo è ricorsivo e si avvale di un altro metodo ricorsivo il quale implementa l'algoritmo.

ciao a tutti