#include #include #define MAX 12 int A[MAX]; int sol[MAX]; void Print(int n) { int i; for (i=0; i < n ; i ++) printf(" %d", sol[i] + 1); printf("\n"); } void Perm(int col, int n) { int row; for (row=0; row < n; row ++) { if (A[row]) { sol[col] = row; A[row] = 0; if (col < n-1) Perm(col+1, n); else Print(n); A[row] = 1; } } } int main(int argc, char* argv []) { int i, n; if (argc != 2) { printf("\n A single arguments expected.\n"); return 1; } n = atoi(argv[1]); if (n < 0) { printf("\n Positive number expected.\n"); return 2; } if (n > MAX) { printf("\n The argument cannot be not greater than %d.\n", MAX); return 3; } for (i=0; i < n; i ++) A[i] = 1; Perm(0, n); return 0; }