//全排列的递归实现
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
void swi(char *a,char *b){
char temp;
temp = *a;
*a = *b;
*b = temp;
}
bool Ischange(char *a,int begin,int end){
for(int i=begin; i<end; i++)
if(a[i]==a[end])
return false;
return true;
}
void full(char *a,int begin, int end){
if(begin==end){
static int s = 1;
printf("%3d次\t%s\n",s++,a);
}
else{
for(int i=begin; i<=end; i++){
if(Ischange(a,begin,i)){
swi(a+i,a+begin);
full(a,begin+1,end);
swi(a+i,a+begin);
}
}
}
}
int main(){
static int k = 1;
char a[] = "123";
full(a,0,3);
return 0;
}