//全排列实现
#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
using namespace std;
template<typename T>
void perm(vector<T> list,int k, int m,vector<vector<T>> &resul)
{
inti;
if(k>m) {
resul.push_back(list);
}
else {
for(i= k ; i <=m;i++) {
if(i!=k){
//swap(list[k],list[i]);
Ttemp=list[k];
list[k]=list[i];
list[i]=temp;
}
perm(list,k+1,m,resul);
if(i!=k){
//swap(list[k],list[i]);
Ttemp=list[k];
list[k]=list[i];
list[i]=temp;
}
}
}
}
#define NN 4
int main(){
vector<int>nu;
int a[NN]={1,2,3,4};
for(int i=0;i<NN;i++)
nu.push_back(a[i]);
vector<vector<int>>re;
perm(nu,0,NN-1,re);
for(int i=0;i<re.size();i++)
{
for(int j=0;j<re[0].size();j++)
cout<<re[i][j];
cout<<"";
}
return0;
}
解释一下,采用的模板机制,可以对诸如vector<T>nu {0,1,2,3,4,5……},或者{a,b,c,d……},或者{ab,ac,dnd,mfd……}等采用递归方法进行全排列,并且将排列的结果保存在vector<vector<T>> re;
初学的菜鸟可以借鉴一下