#include<string.h>
#include<stdio.h>
void mswap(char *str, int x, int y)
{
char c = str[x];
str[x] = str[y];
str[y] = c;
}
void rank(char* str, int begin, int end)
{
if(begin == (end - 1))
{
printf("%s \n", str);
}
else
{
for(int k=begin; k<end; k++)
{
mswap(str, k, begin);
rank(str, begin+1, end);
mswap(str, k, begin);
}
}
}
int main(int argc, char **argv)
{
char * str = NULL;
str = argv[1];
printf("str: %s\n", str);
rank(str, 0, strlen(str));
return 0;
}
./rank "abc"
输出:
abc
acb
bac
bca
cba
cab