N Queens递归方法一维数组

时间:2018-10-28 10:44:03

标签: java n-queens

我不确定如何编写此方法。应该将positionQueens(0)放在第一行中,然后用positionQueens(1)调用自身,然后放入下一行。如果现在可以将其放置在一行中的任何位置,则应回溯到上一行,并检查是否将上一个女王放置在新位置。

private void positionQueens(int row){
    for (int col = 0; col < row; col++){
        if(legal(row,col)){
            queens[row] = col;
        }
        else {
            positionQueens(row+1);
        }
    }
}

这是我的方法,用于检查将女王/王后放在n行,列中是否合法

 private boolean legal(int row, int col){
    for (int i = 0; i < row; i++){
        if ((queens[i] == col) || (Math.abs(i-row)==Math.abs(queens[i]-col))){
            return false;
        }
    }
    return true;
}

0 个答案:

没有答案