questa versione è un po più compatta
codice:
import java.io.PrintStream;
import java.util.*;
import java.util.StringTokenizer;
public class permutazioni
{
static int ind=0;
public permutazioni(){
}
public static void permutate(){
String str="Ciao sono io";
String[] tmpStr = null;
StringTokenizer tok = new StringTokenizer(str);
int countToken = tok.countTokens();
tmpStr = new String[countToken];
for (int i = 0; i < countToken; i++){
tmpStr[i] = tok.nextToken();
}
int lu= countToken;
String[][]qw=new String[factorial(lu)][lu];
ArrayList a=new ArrayList();
String s="";
for(int i=0;i<=lu-1;i++){
s=Integer.toString(i+1);
a.add(s);
}
int []B=new int[a.size()];
for (int i=0;i<=B.length-1;i++){
B[i]=i;
}
generaPermutazioni(qw,tmpStr,B,0);
}
public static void generaPermutazioni(String[][]qw,String[]s,int[]B, int estremoinferiore)
{ int temp;
// stampa permutazione attuale
if (estremoinferiore==B.length-1) {
for (int j=0; j<B.length; j++){
qw[ind][j]=s[B[j]];
System.out.print(qw[ind][j]+" ");
}ind++;
System.out.println();
}
for (int i=estremoinferiore; i<B.length; i++)
{temp = B[estremoinferiore];
B[estremoinferiore] = B[i];
B[i] = temp;
generaPermutazioni(qw,s,B, estremoinferiore+1);
temp = B[estremoinferiore];
B[estremoinferiore] = B[i];
B[i] = temp;
} }
private static int factorial(int num){
int count = 1;
for (int i = 2; i <= num; i++) {
count *= i;
}
return count;
}
public static void main(String[] _args)
{ permutate();
}}
manca solo la scrittura su file