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

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

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

示例 1:

输入:n = 4
输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例 2:

输入:n = 1
输出:[["Q"]]

提示:

  • 1 <= n <= 9
  • 皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。
n, *_ = map(int, input().split())

table = [['.']* n for _ in range(n)]
# 记录皇后以存在的列数
cols= []
def solveNQueens(n):
# 存答案的列表
res = []
for col in range(n):
table[0][col] = 'Q'
cols.append(col)
# 重第一行的位置开始尝试添加皇后,后面就往下面进行搜索
dfs(table, 1, 0, res)
# 搜完成后进行回溯
table[0][col] = '.'
cols.remove(col)
return res import copy
def dfs(table, x, y, res) -> None:
if y == n:
return
if x == n:
res.append(copy.deepcopy(table))
return if y not in cols:
if check(table,x, y):
table[x][y] = 'Q'
cols.append(y)
dfs(table, x+1, 0, res)
table[x][y] = '.'
cols.remove(y)
dfs(table, x, y+1, res) def check(table, row, col):
for i in range(len(table)):
for j in range(len(table[0])):
if i+j == row+col or i-j == row-col:
if table[i][j] == 'Q':
return False
return True def parse(a):
res = []
for i in range(len(a)):
b = []
for j in range(len(a[i])):
s = ''
for k in a[i][j]:
if k == '.':
s+='.'
if k == 'Q':
s+= 'Q'
b.append(s)
res.append(b)
return res print(parse(solveNQueens(n)))

最新文章

  1. [LeetCode] Set Matrix Zeroes 矩阵赋零
  2. angularjs $scope.$watch(),监听值得变化
  3. JMF框架
  4. Sublime Text3下的markdown插件的安装及配置
  5. VBA使用的Randomize和DoEvents
  6. UVa12264 Risk(最大流)
  7. “我爱淘”冲刺阶段Scrum站立会议10
  8. 基于lnmp.org的xdebug安装
  9. 通过Servlet的response绘制页面验证码
  10. ffdshow 源代码分析1 : 整体结构
  11. BZOJ 1004: [HNOI2008]Cards( 置换群 + burnside引理 + 背包dp + 乘法逆元 )
  12. Product Management vs. Product Marketing
  13. D触发器深入详细介绍(zhuanzai)
  14. Oracle-13:Oracle中的表分区
  15. Element UI 中组件this.$message报错
  16. 学习Android过程中遇到的问题及解决方法——电话监听
  17. pymongo操作mongodb
  18. go中for循环使用多个变量避坑
  19. Github 快速上手实战教程
  20. spring的统一异常处理

热门文章

  1. Linux安装与使用
  2. JS语法-ES6
  3. lombok插件@Slf4j注解不生效问题解决办法
  4. 高级FTP
  5. 后端程序员之路 1、linux、centos
  6. js mysql 时间日期比较
  7. Java 哈希表(google 公司的上机题)
  8. 一. MySQL基础语法
  9. 怎么理解onStart可见但不可交互
  10. python中对类的方法中参数self的理解