(1)递归实现
从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如
此递归处理,从而
得到所有元素的全排列。算法实现如下:
#include
#include
using namespace std;
template
void CalcAllPermutation_R(T perm[], int first, int num)
{
if (num <= 1) {
return;
}
for (int i = first; i < first + num; ++i) {
swap(perm[i], perm[first]);
CalcAllPermutation_R(perm, first + 1, num - 1);
1