编辑代码

#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);
}