/*生成全排列*/
#include<stdio.h>
#define n 4
#define r 3
#define swap(x, y, t) ((t)=(x),(x)=(y),(y)=(t))
int count = 0;
void perm(char *list, int i, int m);
int main()
{
char list[] = {'A', 'B', 'C', 'D'};
perm(list, 0 , r);
getch();
return 0;
}
void perm(char *list, int i, int m)
{
int j;
char tmp;
if(i == r){
count++;
for(j = 0; j < n; j++)
printf("%c", list[j]);
printf(" ");
if(count % 6 == 0)
printf("\n");
}
else
for(j = i; j < n; j++){
swap(list[i], list[j], tmp);
perm(list, i + 1, n);
swap(list[i], list[j], tmp);
}
}