Untitled

 avatar
unknown
java
2 years ago
1.1 kB
5
Indexable
public static void placeQueens(int row, boolean[][] positions, List<boolean[][]> results) {
    int N = positions.length;
    if (row == N) {
        results.add(positions.clone());
    } else {
        for (int col = 0; col < N; col++) {
            if (isSafe(row, col, positions)) {
                positions[row][col] = true;
                placeQueens(row + 1, positions, results);
                positions[row][col] = false;
            }
        }
    }
}

public static boolean isSafe(int row, int col, boolean[][] positions) {
    int N = positions.length;
    // Check this row on left side
    for (int c = 0; c < col; c++) {
        if (positions[row][c]) {
            return false;
        }
    }
    // Check upper diagonal on left side
    for (int r = row, c = col; r >= 0 && c >= 0; r--, c--) {
        if (positions[r][c]) {
            return false;
        }
    }
    // Check lower diagonal on left side
    for (int r = row, c = col; r < N && c >= 0; r++, c--) {
        if (positions[r][c]) {
            return false;
        }
    }
    return true;
}
Editor is loading...