#include<stdio.h>
int sum=0;
void Swap(int *a,int x,int y) { //交换函数
int t=a[x];
a[x]=a[y];
a[y]=t;
}
void Perm(int *a,int m,int n) { //全排列函数
if(m==n) {
for(int i=0;i<n;i++){
printf("%d",a[i]);
}
printf(" ");
sum++;
if(sum==6){
sum=0;
printf("\n");
}
}
else for(int i=m;i<n;i++){ //n次嵌套循环,交换值实现所有可能的情况
Swap(a,m,i);
Perm(a,m+1,n); //递归
Swap(a,m,i);
}
}
int main() {
int a[10];
int n = 4;
for(int i=0;i<n;i++) a[i]=i+1;
Perm(a,0,n);
}