/* ======================= 8 queen problem ====================== */
/* === === */
/* === Author: Dr. Peter Wang === */
/* === Purpose: To place 8 queens on an 8 X 8 grid such that === */
/* === no two queens can be on the same row, column === */
/* === or same diagonal === */
/* === Design date: Jan. 25, 1998 === */
/* === === */
/* =======================*************========================== */
#include
#define NQ 8 /* 8 queens */
#define NQT2M1 15 /* 15 diagonals -7,-6,..6,7 or 0,1,..15 */
#define NQM1 7 /* offset to diagonal array or last column */
/* ---------------------------- main ------------------------------ */
void main()
{
int place[NQ]; /* place for each queen */
int col[NQ]; /* column marker */
int bs[NQT2M1]; /* quadran2 to quadran4 diagonals */
int sh[NQT2M1]; /* quadran1 to quadran3 diagonals */
int i; /* row index */
int j; /* column index */
int k; /* general index counter */
int m; /* difference of i,j and shift (NQ-1) positions */
int n; /* sum of i,j */
int currentj; /* current column to try for i's queen */
int flag; /* place a queen here and move on to next row */
int count=1; /* counter for number of solutions found */
/* initialize place, col, bs, sh arrays to 0's */
for(k=0;k=0 )
{
/* try each column from currentj to NQ-1 */
for(j=currentj;j