/* ======================= 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