力扣-51.N皇后

题目链接

51.N皇后

java 复制代码
class Solution {
    List<List<String>> res = new ArrayList<>();
    List<String> path = new ArrayList<>();

    void backtracking(char[][] board, int n, int row) {
        if (row >= n) {
            res.add(new ArrayList<>(path));
            return;
        }
        // 尝试在当前行的每一列放置皇后
        for (int col = 0; col < n; col++) {
            if (isValid(board, row, col, n)) {
                board[row][col] = 'Q';
                path.add(new String(board[row]));
                backtracking(board, n, row + 1);
                board[row][col] = '.';
                path.remove(path.size() - 1);
            }
        }
    }

    public boolean isValid(char[][] board, int row, int col, int n) {
        // 检查同列是否有皇后,因为按行插入同行不会有
        for (int i = 0; i < n; i++) {
            if (board[i][col] == 'Q') {
                return false;
            }
        }
        // 检查右上斜线
        for (int i = row, j = col; i >= 0 && j < n; i--, j++) {
            if (board[i][j] == 'Q')
                return false;
        }
        // 检查左上斜线
        for (int i = row, j = col; i >= 0 && j >= 0; i--, j--) {
            if (board[i][j] == 'Q')
                return false;
        }
        return true;
    }

    public List<List<String>> solveNQueens(int n) {
        char[][] board = new char[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                board[i][j] = '.';
            }
        }
        backtracking(board, n, 0);
        return res;
    }
}

小结:初始化棋盘,按行递归处理,确保每行只有一个皇后,之后尝试在当前行的每一列放置皇后。

Java字符数组转字符串

  1. 使用 String 构造函数
java 复制代码
char[] charArray = {'H', 'e', 'l', 'l', 'o'};
String str = new String(charArray); // "Hello"
  1. 使用 String.valueOf()
java 复制代码
char[] charArray = {'W', 'o', 'r', 'l', 'd'};
String str = String.valueOf(charArray);  // "World"
相关推荐
数模竞赛Paid answer7 小时前
2026年中青杯数学建模A题数学建模论文智能评估系统与多智能体优化方法求解全过程论文及程序
算法·数学建模·中青杯
银-豆豆7 小时前
数据结构与算法-动态规划、回溯与贪心
算法·动态规划
想吃火锅10059 小时前
【leetcode】200. 岛屿数量
算法·leetcode·职场和发展
Nil2089 小时前
leetcode 54螺旋矩阵
算法·leetcode·矩阵
依然鸣10 小时前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
qeen8713 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
lucas_AI13 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法
冻柠檬飞冰走茶14 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法
民乐团扒谱机14 小时前
【微实验】倒谱算法(Cepstrum)深度解析:原理、数学推导与代码实现
人工智能·算法·语音识别
evans在进步15 小时前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode