我不确定如何编写此方法。应该将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;
}