//本题主要思想是递归,Rank(T data[],int start,int end)的意义是data数组在start以前的部分原样输出,
//start到结束的部分求全排列,data中允许有重复字符
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
void Swap(T &var1,T &var2)
{
T tmp;
tmp=var1;
var1=var2;
var2=tmp;
}
template <typename T>
void Rank(T data[],int start,int end)
{
//当只需要将最后一个元素求全排列时,则将当时的数组输出即可
if(start == end)
{
for(int i=0;i<=end;i++)
cout<<data[i];
cout<<endl;
return;
}
for(int i=start;i<=end;i++)
{
int flag=0;//标记当前的交换和递归是否要进行
for(in
//start到结束的部分求全排列,data中允许有重复字符
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
void Swap(T &var1,T &var2)
{
T tmp;
tmp=var1;
var1=var2;
var2=tmp;
}
template <typename T>
void Rank(T data[],int start,int end)
{
//当只需要将最后一个元素求全排列时,则将当时的数组输出即可
if(start == end)
{
for(int i=0;i<=end;i++)
cout<<data[i];
cout<<endl;
return;
}
for(int i=start;i<=end;i++)
{
int flag=0;//标记当前的交换和递归是否要进行
for(in