全排列
全排列就是得到将一组数据的所有排列顺序。
比如给定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;
}
登高而望。

浙公网安备 33010602011771号