N ферзей рекурсивный метод 1d массив

Я не уверен, как написать этот метод. 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 ответов

Другие вопросы по тегам