全排列(递归算法实现)

没啥好说的,理解了递归部分就一切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
}

posted on 2020-07-01 18:14  星月皎洁  阅读(339)  评论(0)    收藏  举报

导航