这个算法怎么理解
//是个求全排列的算法,为什么要用交换(Swap),算法思路是什么,谁能详细解释下
#include<iostream>
using namespace std;
template<class T>
void Swap(T& a, T& b)
{
T temp=a;a=b;b=temp;
}
template<class T>
void Perm(T list[],int k,int m)
{
int i;
if(k==m)
for(i=0;i<=m;++i)
cout<<list[i]<<endl;
else
for(i=k;i<=m;++i){
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}
int main()
{
char list[3]={'a','b','c'};
Perm(list,0,2);
return 0;
}