全排列问题详解
生成1-n的排列
#include <cstdio>
#include <cstring>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
void Swap(int A[],int p,int q)
{
int temp = A[p];
A[p] = A[q];
A[q] = temp;
}
void print_Array(int A[],int length)
{
for(int i = 0; i < length;i++)
{
printf("%d ",A[i]);
}
printf("\n");
}
void perm(int A[],int p,int q)
{
if(p==q)
{
print_Array(A,3);
}
else
{
int i;
for(i = p;i <= q;i++)
{
Swap(A,p,i); //交换p与i,此处意欲将所需的元素放到数组头部,然后对接下来的
//p+1——p进行排列组合
perm(A,p+1,q); //递归调用
Swap(A,p,i); //将交换的元素换回,防止打乱次序
}
}
}
int main()
{
int A[3] = {1,2,3};
perm(A,0,2);
return 0;
}