Need an explanation regards the following recursion

• 12-03-2011, 12:29 PM
Yakg
Need an explanation regards the following recursion
Hi, need help understanding the calculation aspect of: if ((q[i] - q[n]) == (n - i)) return false; // same major diagonal
in the following code:

Code:

```public class Queens {   /***********************************************************************     * Return true if queen placement q[n] does not conflict with     * other queens q[0] through q[n-1]     ***********************************************************************/     public static boolean isConsistent(int[] q, int n) {         for (int i = 0; i < n; i++) {             if (q[i] == q[n])            return false;  // same column             if ((q[i] - q[n]) == (n - i)) return false;  // same major diagonal             if ((q[n] - q[i]) == (n - i)) return false;  // same minor diagonal         }         return true;     }```

Thanks :-)
• 12-03-2011, 02:01 PM
JosAH
Re: Need an explanation regards the following recursion
Draw an eight x eight grid on a piece of paper; the top row of your grid contains the coordinates (0, 0) (0, 1) (0, 2) (0, 3) (0, 4) (0, 5) (0, 6) and (0, 7); the next row contains the coordinates (1, 0) (1, 1) (1, 2) ... etc. Supose your array q contains eight elements, one for each column in your grid and q[i] contains the second coordinate in the coordinate pair (i, q[i]).

If q[i] ==q[n] there are two queens in columns i and n that are positioned in the same row. Check your grid and try to find a regularity for two values in the same upgoing diagonal and similar for a down going diagonal.

kind regards,

Jos