如题
#include "stdafx.h"
unsigned char arr[30];
int len;
void Swap(char *lhs, char *rhs)
{
int t = *lhs;
*lhs = *rhs;
*rhs = t;
}
void swopPrint()
{
for (int i = 0; i < len; i++)
cout << arr[i];
cout << "\n";
Swap(&arr[len - 2], &arr[len - 1]);
for (int i = 0; i < len; i++)
cout << arr[i];
cout << "\n";
Swap(&arr[len - 2], &arr[len - 1]);
}
void fullPermutation(int num)
{
for (int numTime = 0; numTime < num; numTime++)
{
Swap(&arr[len - num], &arr[len - num + numTime]);
if (num == 2)
num--;
if (num == 1)
swopPrint();
else if (num > 2)
fullPermutation(num - 1);
Swap(&arr[len - num], &arr[len - num + numTime]);
}
}
int main()
{
cin >> len; //获取排列长度
for (int i = 0; i < len; i++)//初始化全排列元素
arr[i] = '1'+i;
fullPermutation(len); //调用
return 0;
}