给定一 一维数组a[14]={1,2,3,4,5,6,7,8,9,10,11,12,13,14}
求它们的所有排列顺序
參考答案:#include <iostream.h>
int A[15]={14,1,2,3,4,5,6,7,8,9,10,11,12,13,14};
/*A[1..14];为了下标从1开始,我用15个空间存14个数,第一个空间存数组长度
程序运行不结束是正确的因为14个数的全排列要***********个输出
*/
void Write(int a[])
{
// output the the elements of an array;
//input : an array
for(int i = 1;i<=14;i++)
cout<<a[i]<<'\t';
cout<<endl;
sum++;
}
void HeapPermute(int n)
{
/*实现生成全排列的Heap算法
输入全局数组A[1..n]
输出 A的全排列*/
if (n==1)
Write(A);
else
for(int i = 1;i<=n;i++)
{
HeapPermute(n-1);
if (n%2 != 0)
Swap(A[1],A[n]);
else
Swap(A[i],A[n]);
}
}
int main()
{
HeapPermute(14);
//cout<<fun(6);
//cout<<sum<<endl;
//cout<<SearchMin(A,1,5)<<endl;
return 0;
}