基本思想:对n个元素的全排列,我们可以先进行第一个元素和剩下的n-1个元素进行分别交换然后对剩下的n-1个元素全排列。
for(int i=k;i<=m;i++)
{
swap(c[k],c[i]);
Permutation(c,k+1,m);
swap(c[k],c[i]);
}
等递归到最后一个元素输出排列。
void Permutation(char *c,const int k,const int m)
{
if(k==m)
{
for(int i=0;i<m;i++)
cout<<c[i]<<" "<<endl;
}
else
for(int i=k;i<=m;i++)
{
swap(c[k],c[i]);
Permutation(c,k+1,m);
swap(c[k],c[i]);
}
}