2013-12-13 3 views
0

У меня возникли проблемы с работой над заданием, и мне было интересно, может ли кто-нибудь указать мне правильное направление. Проект представляет собой назначение восьми ферзей, где мне нужно сделать программу с использованием рекурсии, чтобы найти решение, в котором 8 ферзей могут быть размещены на доске, не нападая друг на друга.Застрял на EightQueens Java

Мой выход постоянно возвращается что-то вроде этого:

false, false, false, false, false, false, false, false, 
true, false, false, false, false, false, false, false, 
true, false, false, false, false, false, false, false, 
true, false, false, false, false, false, false, false, 
true, false, false, false, false, false, false, false, 
true, false, false, false, false, false, false, false, 
true, false, false, false, false, false, false, false, 
true, false, false, false, false, false, false, false, 

который не является правильным решением. Вот код checkVertical, который у меня есть до сих пор.

public static boolean checkVerticals(boolean[][] board){ 

      for (int i=0; i<board.length;i++){ 
       int count = 0; 
       for (int j=0; j<board.length;j++){ 
        if (board[j][i] = true) 
        count++; 
       } 

       if (count > 1) { 
        return false; 
       } 

      } 
     return true; 

    } 
+0

Могут ли вы объяснить концепцию восемь королева? когда они атакуют друг друга? – CloudyMarble

ответ

0

Я понял.

if (board[j][i] = true) должно быть if (board[j][i] == true)

+3

Или просто 'if (board [j] [i])', потому что каждый элемент массива 2-d платы является 'boolean' в любом случае. – SudoRahul

+0

Возьмите предложение @ R.J, но FYI, это очень распространенная ошибка и почему вы иногда видите такие вещи, как 'if (0 == x)', так что исключение '=' вызывает ошибку компиляции. –

+0

спасибо, ребята. Я буду использовать формат R.J в будущем, чтобы избежать этой ошибки снова. – user2913669

Смежные вопросы