全排列

全排列就是得到将一组数据的所有排列顺序。

比如给定abc字符串,它的全排列就是

abc,acb,bac,bca,cba,cab

我们可以采用递归来完成全排列,原理如图所示。

 

递归代码如下:

#include<stdio.h>
#include<string.h>
swap(char *a,char *b)
{
  char temp=*a;
  *a=*b;
  *b=temp;
}
fun(char data[99],int k)
{
    int i;
    if(k==strlen(data)-1)
    printf("%s\n",data);
    else
    {
      for(i=k;i<=strlen(data)-1;i++)
      {
        swap(&data[i],&data[k]);
        fun(data,k+1);
        swap(&data[i],&data[k]);
      }
    }
}
main()
{
  char data[99];
  scanf("%s",data);
  fun(data,0);
  return 0;
}

  

 

posted @ 2020-05-07 14:02  X-Yunner  阅读(398)  评论(0)    收藏  举报