如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。
import java.util.Scanner;
import java.util.Vector;
/*
* 字符排序
* 字符数组的全排列组合
*/
public class charSort {
private static int count;
public static void Permutation(Vector<Character>source,Vector<Character>result){
if(source.size()==0){
for(int i=0;i<result.size();i++){
System.out.print(result.elementAt(i));
}
System.out.println();
count++;
}
for(int i=0;i<source.size();i++){
Vector<Character> tsource=new Vector<Character>(source);
Vector <Character>tresult=new Vector<Character>(result);
tresult.add(source.elementAt(i));
tsource.remove(i);
new charSort().Permutation(tsource, tresult);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<Character>source=new Vector<Character>();
Vector<Character>result=new Vector<Character>();
Scanner input=new Scanner(System.in);
int n=input.nextInt();
for(int i=0;i<n;i++){
source.add((char)(i+'A'));
}
new charSort().Permutation(source, result);
System.out.println(count);
}
}