代码
#include<iostream>
using namespace std;
void swap(int a[],int i,int j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
void printArray(int a[],int n){
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
void perm(int a[],int p,int q)
{
if(p!=q){
for(int i=p;i<=q;i++){
swap(a,p,i);//将a[p]~a[q]的每一个字符都放置开头
perm(a,p+1,q);
swap(a,p,i);//注意还原,否则会导致排列重复
}
}
else{
printArray(a,q+1);
}
}
/*函数功能:对a[p]~a[q]之间的元素进行全排列
*/
int main(){
int a[5]={1,2,3,4,5};
perm(a,0,4);
return 0;
}
辅助图
参考资料
1、视频讲解 灯神的B站视频