全排列是将一组数(非重复)按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个。可以采用递归的方式实现。
public class Perm{
static numPerm=0;
public static void main(String[] args){
Perm perm=new Perm();
String[] list={"A","B","C","D","E"};
perm.permAll(list,0,list.length-1);
System.out.println("总共有"+numPerm+"种排列");
}
public
void permAll(T[] list,int k,int m){
if(k==m){
for(int i=0;i<=m;i++){
System.out.print(list[i]+" ");
}
numPerm++;
System.out.println();
}else{
for(int i=k;i<=m;i++){
swap(list,i,k);
permAll(list,k+1,m);
swap(list,i,k);
}
}
}
private
void swap(T[] list,int i,int j){
T temp=list[i];
list[i]=list[j];
list[j]=temp;
}
}