【例1-20】全排列的时间复杂度O(n*(n!))
#include <stdio.h>
#include <string.h>
#define SWAP(A,B,C) ((C = A),(A = B),(B = C))
void perm(char *,int,int);
int main(void){
char *list = "abcdefghijklmn";
int len = strlen(list);
int start,end;
start = 1;
end = 5;
printf("perm(list,%d,%d):\n",start,end);
perm(list,start,end);
}
void perm(char *list, int i, int n){
int j,temp;
if (i==n){
for(j=0;j <= n;j++)
printf("%c",list[j]);
printf(" ");
}
else{
for(j=i;j <= n;j++){
SWAP(list[i],list[j],temp);
perm(list,i+1,n);
SWAP(list[i],list[j],temp);
}
}
}