递归生成n个元素的所有排列方式

来源:互联网 发布:it技术团队口号 编辑:程序博客网 时间:2024/05/16 04:26

通常我们希望检查n个不同元素的所有排列方式以确定一个最佳的排列。比如,a,b,c的排列方式有: abc, acb, bac, bca, cab和cba. N个元素的排列方式共有n!种。

//生成list[k:m]的所有排列方式
void Perm(char list[], int k, int m)
{
 int i;
 if(k==m)
 {
  for(i=0;i<=m;i++)
  {
   printf("%c", list[i]);
   printf("/n");
  }
 }
 else
 {
  for(i=k;i<=m;i++)
  {
   swap(list+k, list+i);
   Perm(list, k+1, m);
   swap(list+k, list+i);
  }
 }
}

Ref:<<数据结构,算法与应用>> P7~P8

原创粉丝点击