#include <stdio.h> #define N 4 enum bool {TRUE, FALSE}; void print_Q(int *Q) { int i; for (i = 1; i <= N; i++) printf("%d, ", Q[i]); printf("\n"); } void RecursiveNQueens(int *Q, int r) { if (r == N+1) print_Q(Q); else { int j, i; enum bool legal; for (j = 1; j <= N; j++) { legal = TRUE; for (i = 1; i <= r-1; i++) { if ( (Q[i] == j) || (Q[i] == j+r-i) || (Q[i] == j-r+i) ) legal = FALSE; } if (legal == TRUE) { Q[r] = j; //printf("Q[%d] = %d\n", r, j); RecursiveNQueens(Q, r+1); } } } } int main() { int Q[N+1] = {0}; int r = 1; RecursiveNQueens(Q, r); return 0; }