当前位置: 首页 > news >正文

LeetCode Hot100 51.N皇后

题目

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

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

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

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

思路

class Solution {private int n;private int[] col;private List<List<String>> ans = new ArrayList<>();public List<List<String>> solveNQueens(int n) {this.n = n;col = new int[n];dfs(0);return ans;}private void dfs(int r) {if (r == n) { // 所有皇后放好了List<String> tmp = new ArrayList<>();for (int i : col) {char[] row = new char[n];Arrays.fill(row, '.');row[i] = 'Q';tmp.add(new String(row));}ans.add(tmp);return;}for (int c = 0; c < col.length; c++) {if (valid(r, c)) {col[r] = c;dfs(r + 1);}}}private boolean valid(int r,int c) {for (int R = 0; R < r; R++) {int C = col[R];if ((c == C) || ((R + C) == (r + c) || (R - C) == (r - c)))return false;}return true;}
}

http://www.lryc.cn/news/263578.html

相关文章:

  • 机器学习 | 贝叶斯方法
  • 缓存的定义及重要知识点
  • TrustZone之顶层软件架构
  • SpringBoot Whitelabel Error Page 报错--【已解决】
  • 02.Git常用基本操作
  • 黑盒测试中关键截图如何打点
  • 画图之C4架构图idea和vscode环境搭建篇
  • 安卓小练习-校园闲置交易APP(SQLite+SimpleCursorAdapter适配器)
  • Pycharm 如何更改成中文版| Python循环语句| for 和 else 的搭配使用
  • 智合同是怎么审合同的?
  • 使用Httpclient来替代客户端的jsonp跨域解决方案
  • 测试工具Jmeter:设置中文界面
  • K8s攻击案例:RBAC配置不当导致集群接管
  • 运行hive的beelin2时候going to print operations logs printed operations logs
  • 从 MySQL 到 DolphinDB,Debezium + Kafka 数据同步实战
  • 六.聚合函数
  • Eclipse_03_如何加快index速度
  • scrapy的入门和使用
  • yolov5单目测距+速度测量+目标跟踪(算法介绍和代码)
  • flink 读取 apache paimon表,查看source的延迟时间 消费堆积情况
  • 无人机在融合通信系统中的应用
  • MySQL库的操作
  • 服务器解析漏洞有哪些?IIS\APACHE\NGINX解析漏洞利用
  • Https图片链接下载问题
  • Wireshark在移动网络中的应用
  • Leetcode 1901. 寻找峰值 II(Java + 列最大值 + 二分)
  • RabbitMQ 消息持久化
  • Opencv实验合集——实验四:图片融合
  • Java复习
  • 腾讯云微服务11月产品月报 | TSE 云原生 API 网关支持 WAF 对象接入