1.基本介绍:
全排列就是从第一个数字起每个数分别与它后面的数字交换,举个栗子:abc的全排列为abc,acb,bca,bac,cab,cba。
2.代码如下:
#include<stdio.h>
void swap(int a[],int i,int j){//用于交换
int t;
t=a[i];a[i]=a[j];a[j]=t;
}
void printarray(int a[],int n){//用于输出数组
int i;
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
void perm(int a[],int p,int q){//p,q为进行全排列的范围
if(p==q){
printarray(a,q+1);//输出数组
}
else{
int i;
for(i=p;i<=q;i++){
swap(a,p,i);//交换数组a中p与i的值
perm(a,p+1,q);//进行全排列
swap(a,p,i);
}
}
}
int main(){
int a[4]={1,2,3,4};
perm(a,0,3);//对数组a进行全排列
return 0;
}