/*N个字符的排列组合*/
#include <stdio.h>
#define num 5
void main()
{
int i,j=num;
char *p[num];
char c[num];
void func(int n,char *p[],char c[]);
printf("please insert %d words:",j);
for (i=0;i<num;i++) scanf("%c",&c[i]);
for (i=0;i<num;i++) p[i]=&c[i];
func(num,p,c);
}
void func(int n,char *p[],char c[])
{
int i,j,k;
char *pr;
if (n==1) printf("%c",*p[0]);
if (n==2)
{
for (i=1;i<3;i++)
{
pr=p[num-1],p[num-1]=p[num-2],p[num-2]=pr;
for (j=0;j<num;j++) printf("%c",*p[j]);
printf("|");
}
}
else
{
for(k=0;k<n;k++)
{
if(k==0) func(n-1,p,c);
else
{
pr=p[num-n],p[num-n]=p[num-k],p[num-k]=pr;
func(n-1,p,c);
pr=p[num-n],p[num-n]=p[num-k],p[num-k]=pr;
}
}
}
}