#include<stdio.h>
void perm(char *list,int i,int n);
void swap(char *a,char *b);
int main()
{
char a[5]={'a','b','c','\0'};
perm(a,0,2);
}
void perm(char *list,int i,int n)
{
int j;
if(i==n)//满足长度就输出
{
for(j=0;j<=n;j++)
printf("%c",list[j]);
printf("\n");
}
else
{
for(j=i;j<=n;j++)
{
swap(&list[i],&list[j]);//每次进行交换,然后不断递归就可以得到新结果
perm(list,i+1,n);
swap(&list[i],&list[j]);//将交换重新调整回来,下次当j增加的时候在交换就不会重复
}
}
}
void swap(char *a,char *b)
{
char c;
c=*a;
*a=*b;
*b=c;
}