Мне нужно написать программу для класса, чтобы протестировать 2D-массив, это «проблема 8 ферзей». Все, что нам нужно сделать, это написать код для проверки того, имеет ли данный 2D-массив допустимое расположение для всех восьми ферзей, что означает:
Только одна ферзь на ряд .
Только одна королева на столбец .
Только одна ферзь на каждый диагональный путь .
У меня проблема с диагональной итерацией. Я получаю ошибку Index 8 out of bounds for length 8
.
int gitter [][] // name for the 2D-Array
public static boolean gitterIstRichtig = true; // this is to check if conditions are met
for (row = 0; row <= gitter.length - 1; row++)
{
queens = 0;
for (column = 0; column <= gitter[0].length - 1; column++)
{
queens += gitter[row][column];
if ((gitter[row][column] == 1) && ((row + 1) <= gitter.length - 1))
{
if ((column + 1) <= gitter[0].length - 1)
{
int n = 1;
while ((column + n) <= gitter[0].length - 1)
{
if ((gitter[row + n][column + n] == 1)) // HERE IS WHERE THE ERROR POINTS TO
{
gitterIstRichtig = false;
}
n++;
}
}
if ((column - 1) >= 0)
{
int n = 1;
while ((column - n) >= 0)
{
if ((gitter[row + n][column - n] == 1)) // HERE IS WHERE THE ERROR POINTS TO
{
gitterIstRichtig = false;
}
n++;
}
}
}
}
}