代码:
public class EnumerationArrangement {
public static void main(String[] args) {
int[] A = {1,2,3,4,5};
print_repermutation(A.length, A, 0);
}
public static void print_permutation(int n, int[] A, int cur){
if(cur == n){//递归边界判断
for (int i=0;i<n;i++){
System.out.print(A[i]+" ");
}
System.out.println();
}
else{//没达到截止条件
for (int i = 1;i<=n;i++){//尝试在A[cur]中填入各种整数i
boolean flag = true;
for (int j = 0;j<cur;j++){
if(A[j]==i)flag = false;//如果i已经在之前出现过,则不能再选择
}
if(flag){//只要没有出现过,则让这个值等于A[cur]
A[cur] = i;
print_permutation(n,A,cur+1);//递归调用
}
}
}
}
public static void print_repermutation(int n, int[] A, int cur){
if(cur == n){//递归边界判断
for (int i=0;i<n;i++){
System.out.print(A[i]+" ");
}
System.out.println();
}
else{//没达到截止条件
for (int i = 1;i<=n;i++){//尝试在A[cur]中填入各种整数i
A[cur] = i;
print_repermutation(n,A,cur+1);//递归调用
}
}
}
}