/* * File: perm.c * Purpose: Prints all permutations of [n] * Compilation: gcc -o perm perm.c * Execution: ./perm n * where n is a positive integer * Author: San Skulrattanakulchai */ #include #include void swap(int a[], int i, int k) { int temp = a[i]; a[i] = a[k]; a[k] = temp; } void printArray(int a[], int size) { int i; printf("%d", a[0]); for (i = 1; i < size; i++) printf(", %d", a[i]); putchar('\n'); } void perm(int k, int pi[], int size) { if (k == size) printArray(pi, size); else { int i; for (i = k; i < size; i++) { swap(pi, i, k); perm(k+1, pi, size); swap(pi, i, k); } } } int main(int argc, char **argv) { int n = atoi(argv[1]); int *pi = malloc(n * sizeof(int)); int i; for (i = 0; i < n; i++) pi[i] = i; perm(0, pi, n); return 0; }