day30 n皇后

day29 回溯

N皇后

题目链接: N皇后

题目描述

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。?

解答

class Solution {
   
    List<List<String>> res = new ArrayList<>();
    boolean[] usedCol , usedDiag45 , usedDiag135;
    public List<List<String>> solveNQueens(int n) {
   
        usedCol = new boolean[n];
        usedDiag45 = new boolean[2 * n - 1];
        usedDiag135 = new boolean[2 * n - 1];
        int[] board = new int[n];
        backTracking(board , n , 0);
        return res;
    }
    void backTracking(int[] board , int n , int row) {
   
        if (row == n) {
   
            List<String> temp = new ArrayList<>();
            for (int i : board) {
   
                char[] str = new char[n];
                Arrays.fill(str , '.');
                str[i] = 'Q';
                temp.add(new String(str));
            }
            res.add(temp);
            return;
        }
        for (int col = 0; col < n; col++) {
   
            if (usedCol[col] | usedDiag45[row + col] | usedDiag135[row - col + n - 1]) {
   
                continue;
            }
            board[row] = col;
            usedCol[col] = true;
            usedDiag45[row + col] = true;
            usedDiag135[row - col + n - 1 ] = true;

            backTracking(board , n , row + 1);
            usedCol[col] = false;
            usedDiag45[row + col] = false;
            usedDiag135[row - col + n - 1] = false;
        }
    }
}

最近更新

  1. TCP协议是安全的吗?

    2024-02-09 00:52:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-09 00:52:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-09 00:52:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-09 00:52:01       20 阅读

热门阅读

  1. C语言-----自定义类型-----结构体

    2024-02-09 00:52:01       38 阅读
  2. Linux开机自动执行自定义脚本或命令

    2024-02-09 00:52:01       32 阅读
  3. 常见的Web前端开发框架推荐

    2024-02-09 00:52:01       34 阅读
  4. Linux 文件连接:符号链接与硬链接

    2024-02-09 00:52:01       31 阅读
  5. rust给py写拓展如此简单

    2024-02-09 00:52:01       37 阅读
  6. 记录分享Spring Boot集成MQTT(配有简单实现示例)

    2024-02-09 00:52:01       37 阅读
  7. 常用的 Linux 命令

    2024-02-09 00:52:01       31 阅读
  8. Day42 474一和零 完全背包理论基础 518零钱兑换II

    2024-02-09 00:52:01       33 阅读
  9. Go基础学习笔记-知识点

    2024-02-09 00:52:01       25 阅读
  10. chrome扩展插件常用文件及作用

    2024-02-09 00:52:01       30 阅读
  11. csapp-chapter3--mov指令

    2024-02-09 00:52:01       29 阅读
  12. 【Nginx介绍和使用——详细讲解】

    2024-02-09 00:52:01       32 阅读