设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。
设R={r1,r2,…,rn}是要进行排列的n个元素,Ri=R-{ri}。
集合X中元素的全排列记为perm(X)。
(ri)perm(X)表示在全排列perm(X)的每一个排列前加上前缀得到的排列。R的全排列可归纳定义如下:
当n=1时,perm®=®,其中r是集合R中唯一的元素;
当n>1时,perm®由(r1)perm(R1),(r2)perm(R2),…,(rn)perm(Rn)构成。
1.泛型编程(仿教辅代码行较多)
#include<iostream>
#include<algorithm>
using namespace std;
int sum;
template<class Type>
void permut_repeat(Type a[],int head,int tail)
{
if(head==tail){
sum++;
for(int i=0