import java.util.*;
public class Quanpaifeidigui {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
int num[]=new int[n];
for(int i=0;i<n;i++){
num[i]=in.nextInt();
}
Pailie(num,0); //全排列
}
}
public static void Pailie(int num[],int k){
if(k==num.length-1){
Print(num);
}else{
for(int i=k;i<num.length;i++){ //先保持不变,递归的栈的特点是最后开辟的栈先执行完毕,因此该递归执行的出的全排列具有一定顺序
Swap(i,k,num);
Pailie(num,k+1);
Swap(i,k,num);
}
}
}
//交换函数
public static void Swap(int x,int y,int num[]){
int temp=num[x];
num[x]=num[y];
num[y]=temp;
}
//打印结果
public static void Print(int num[]){
for(int i=0;i<num.length;i++){
if(i==0){
System.out.print(num[i]);
}else{
System.out.print(" "+num[i]);
}
}
System.out.println();
}
}
全排列-递归(不含去重复的操作)非DFS
猜你喜欢
转载自blog.csdn.net/anhuibozhoushatu/article/details/83869789
今日推荐
周排行