#include <stdio.h>
void swap(int A[],int i,int j)
{
int tmp=0;
tmp=A[i];
A[i]=A[j];
A[j]=tmp;
}
void Print(int A[],int n)
{
for (int i=0;i<n;i++)
{
printf("%d ",A[i]);
}
printf("\r\n");
}
void perm(int A[],int p,int q)
{
if (p==q)
{
Print(A,q+1);
}else
{
for (int i=p;i<=q;i++)
{
swap(A,p,i);//第一位开始交换
perm(A,p+1,q);//后面进行全排列
swap(A,p,i);//恢复环境
}
}
}
int main()
{
int arry[3]={1,2,3};
perm(arry,0,2);
int arry1[5]={1,2,3,4,5};
perm(arry1,0,4);
return 0;
}
/*参照:https://video.tudou.com/v/XMTc5MjQ3NTU0MA==.html?__fr=oldtd */
典型深度优先算法:https://blog.csdn.net/weixin_43272781/article/details/82959089