给定一字符串为:"ABC"
要能打印出:
ABC
ACB
BAC
BCA
CAB
CBA
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
static void arrange(char *s, int start, int end);
int main(int argc, char **argv)
{
if (argc != 2) {
printf("usage: ./allrange <string>\n");
exit(EXIT_FAILURE);
}
arrange(argv[1], 0, strlen(argv[1]));
exit(EXIT_SUCCESS);
}
static void arrange(char *s, int start, int end)
{
int i;
char tmp;
if (start == end) {
printf("%s\n", s);
} else {
for (i = start; i < end; i++) {
tmp = s[start]; s[start] = s[i]; s[i] = tmp;
arrange(s, start + 1, end);
tmp = s[start]; s[start] = s[i]; s[i] = tmp;
}
}
}