编辑代码

package homework;
public class EightQueens {

    public static void solveNQueens(int n) {
        int[] queens = new int[n]; // 存储每一行皇后的列位置
        backtrack(queens, 0); // 从第0行开始放置皇后
    }

    private static void backtrack(int[] queens, int row) {
        if (row == queens.length) { // 所有行都放置好皇后,打印结果
            printQueens(queens);
            return;
        }

        for (int col = 0; col < queens.length; col++) {
            if (isValid(queens, row, col)) {
                queens[row] = col; // 放置皇后
                backtrack(queens, row + 1); // 继续下一行的放置
            }
        }
    }

    private static boolean isValid(int[] queens, int row, int col) {
        for (int i = 0; i < row; i++) {
            // 检查与之前行的皇后是否冲突
            if (queens[i] == col || queens[i] - i == col - row || queens[i] + i == col + row) {
                return false;
            }
        }
        return true;
    }

    private static void printQueens(int[] queens) {
        int n = queens.length;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (queens[i] == j) {
                    System.out.print("Q ");
                } else {
                    System.out.print(". ");
                }
            }
            System.out.println();
        }
        System.out.println();
    }

    public static void main(String[] args) {
        int n = 4; // 设置皇后数量为4
        solveNQueens(n);
    }
}