#include <stdio.h>
#include <string.h>
// Swap two characters
void swap(char *x, char *y) {
char temp = *x;
*x = *y;
*y = temp;
}
// Recursive function to generate permutations
void generatePermutation(char *str, int l, int r) {
if (l == r) {
printf("%s\n", str);
} else {
for (int i = l; i <= r; i++) {
swap(&str[l], &str[i]);
generatePermutation(str, l + 1, r);
swap(&str[l], &str[i]); // backtrack
}
}
}
int main() {
char s[] = "ABC";
generatePermutation(s, 0, strlen(s) - 1);
}
/*
run:
ABC
ACB
BAC
BCA
CBA
CAB
*/