c语言全排列(给个简单点的程序,网上的我简直看晕了)

例如输入123 输出123 132 213 231 312 321

//以下为代码文件,思路就是交换数字,递归

  #include <stdio.h>

  int n = 1;

  int ans[1000];

  void swap(int *a, int *b)

  {

  int m;

  m = *a;

  *a = *b;

  *b = m;

  }

  void perm(int list[], int k, int m)

  {

  int i,tmp=0;

  if(k > m)

  {

  for(i = 0; i <= m; i++)

  {

  tmp=tmp*10+list[i];

  

  }

  ans[n]=tmp;

  n++;

  }

  else

  {

  for(i = k; i <= m; i++)

  {

  swap(&list[k], &list[i]);

  perm(list, k + 1, m);

  }

  }

  }

  int main()

  {

  int list[] = {1, 2, 3};

  int i;

  perm(list, 0, 2);

  for(i=1;i<n;i++)printf("%d\n",ans[i]);

  return 0;

  }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-10
要带顺序的吗?如果带顺序,程序就比较麻烦追问

输出全部就行 不限制顺序

追答追问

谢谢了 注释很详细

追答

不客气,多研究一下就会更清楚

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网