给定一个集合,求得集合的全排列
具体的代码如下:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入一个数组,使用空格分割:");
Scanner scanner = new Scanner(System.in);
String rawInput = scanner.nextLine();//使用nextLine只会将Enter当做结束符
String[] perm = rawInput.split(" ");
perm(perm,0,perm.length-1);
}
static void perm(String list[],int k,int m){
if(k==m){//没有到最后一个 所以还需要进行排列
for(int i = 0;i<list.length;i++)
System.out.print(list[i]+" ");
System.out.println();
}else{//进行排列
for(int i = k;i<=m;i++){
String c = list[i];//进行交换 从而完成全排列
list[i] = list[k];
list[k] = c;
perm(list,k+1,m);
c = list[i];//需要交换回来 不然就会乱了顺序
list[i] = list[k];
list[k] = c;
}
}
}