#include <stdio.h>
#include <string.h>
void swap(char *si, char *sj) {
char temp;
temp = *si;
*si = *sj;
*sj = temp;
}
void print_permutations(char *s, int i, int len) {
if (i == len)
printf("%s\n", s);
else {
for (int j = i; j <= len; j++) {
swap((s + i), (s + j));
print_permutations(s, i + 1, len);
swap((s + i), (s + j));
}
}
}
int main(void) {
char s[10] = "abcd";
print_permutations(s, 0, strlen(s) - 1);
return 0;
}
/*
run:
abcd
abdc
acbd
acdb
adcb
adbc
bacd
badc
bcad
bcda
bdca
bdac
cbad
cbda
cabd
cadb
cdab
cdba
dbca
dbac
dcba
dcab
dacb
dabc
*/