#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;
}