问题描述
实现一个简单的全排列算法,以整形数组{1,2,3,4,5}为例,假设元素无重复。...问题分析
如果用多层循环来实现,那么……有多少个元素将需要有多少层循环,这样作为实现一个算法的角度来看显然是不可取的。...以 a[] = {1,2,3,4,5}为例,它的全排列是
1 {2,3,4,5}的全排列
2 {1,3,4,5}的全排列
3 {1,2,4,5}的全排列
4 {1,2,3,5}的全排列
5 {1,2,3,4...}的全排列
由子数组的全排列得到母数组的全排列结果,可以考虑用递归实现,具体可以设计为将 a 依次变换为
12345
21345
31245
41235
51234
然后分别求它们后四个元素的全排列,依此类推...简单的 C++ 实现
#include
using namespace std;
static int n = 0;
void swapint(int *p, int *q)