全排列的算法
全排列的算法有哪些?怎样生成全排列?例如:1 2 3 4 5 6 7 8的全排列有8!种,怎样全部列举出来?
程序代码:#include<iostream>
using namespace std;
const int MaxNum=20;
int a[MaxNum];
void qp(int Array[],int begin,int end);
int main()
{
int i;
for(i=0;i<MaxNum;i++)
a[i]=i+1;
//初始化数组为:1,2,3..
qp(a,0,4);
return 0;
}
void qp(int Array[],int begin,int end)
{
int i;
if(begin>=end)
{
for(i=0;i<end;i++)
cout<<Array[i]<<"\t";
cout<<endl;
}
else for(i=begin;i<end;i++)
{
swap(a[begin],a[i]);
qp(a,begin+1,end);
swap(a[begin],a[i]);
}
}
