没啥好说的,理解了递归部分就一切OK
//全排列即n!
#include<iostream>
using namespace std;
void swap(int a[] , int i , int j)
{
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
void func(int a[] , int k , int m)
//k指第几个确定的数
{
if(k==m)//确定到最后一个数
{
for(int i=0;i<=m;i++)
cout<<a[i]<<" ";
cout<<endl;
}
else{
for(int i=k;i<=m;i++)
//初始k=0,意味着a[0]和所有数都进行交换
{
swap(a,i,k);
func(a,k+1,m);
swap(a,i,k);
}
}
}
int main(){
int a[]={1,2,3};
func(a,0,2);
//数组长度为2
}
原文:https://www.cnblogs.com/ywrxjry/p/13220741.html