2013-12-13 54 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

Take @ R.J的建議,但僅供參考,這是一個非常常見的錯誤,爲什麼你有時候會看到'if(0 == x)'這樣的事情,所以省略'='會導致編譯錯誤。 –

+0

謝謝你們。我將來會使用R.J的格式來再次避免這個錯誤。 – user2913669