Eight Queens, continued
// == 1 if R has two queens on same diagonal, else 0
static int same_diagonal( int [] R ) {
boolean [] PosDiag = new boolean[15];
boolean [] NegDiag = new boolean[15];
// Set PosDiag and NegDiag to all false.
for (int i = 0; i<=14; i++) {
PosDiag[i] = false; NegDiag[i] = false;
// Set same to true if R has 2 queens on same diag.
int c = 0; // column index
while ( c <= 7 && !same ) {
if ( PosDiag[ R[c] + c ] ||
NegDiag[ c - R[c] + 7 ] )
PosDiag[ R[c] + c ] = true;
NegDiag[ c - R[c] + 7 ] = true;