#include #include /* Function swaps to pointers */ void swap(char *x, char *y) { char temp; temp = *x; *x = *y; *y = temp; } /* recursive function to print permutations */ void permutation(char *a, int l, int r) { int i; if (l == r) printf(\"%s\ \", a); else { for (i = l; i <= r; i++) { swap((a+l), (a+i)); permutation(a, l+1, r); swap((a+l), (a+i)); //backtrack } } } /* factorial method*/ int factorial(int n){ if(n==0) return 1; else return n*factorial(n-1); } /* Main function */ int main() { char str[] = \"ABC\"; int n = strlen(str); permutation(str, 0, n-1); int fact = factorial(n); printf(\"Total permutations: %d\ \",fact); return 0; } /* sample output */ Solution #include #include /* Function swaps to pointers */ void swap(char *x, char *y) { char temp; temp = *x; *x = *y; *y = temp; } /* recursive function to print permutations */ void permutation(char *a, int l, int r) { int i; if (l == r) printf(\"%s\ \", a); else { for (i = l; i <= r; i++) { swap((a+l), (a+i)); permutation(a, l+1, r); swap((a+l), (a+i)); //backtrack } } } /* factorial method*/ int factorial(int n){ if(n==0) return 1; else return n*factorial(n-1); } /* Main function */ int main() { char str[] = \"ABC\"; int n = strlen(str); permutation(str, 0, n-1); int fact = factorial(n); printf(\"Total permutations: %d\ \",fact); return 0; } /* sample output */.