Menu
CoddyTech

N-Queens II

困难回溯python iconjava iconcpp iconc iconjs icon+10

皇后会攻击所在行、所在列以及两条对角线上的所有格子,无论距离多远。给定一个整数 n,返回在 n × n 棋盘上放置 n 个皇后的方法数,使得任意两个皇后都不会互相攻击。

只要有任意一个格子不同,棋盘就分别计数,包括互为镜像的棋盘。

函数

totalNQueens(n: integer) → integer
ninteger
棋盘的大小和皇后的数量
返回值integer
摆放皇后的方法数,使得没有皇后能互相攻击

约束条件

  • 1 ≤ n ≤ 12
  • 对于 n = 12,答案是 14,200,因此它可以存储在 32 位整数中。

示例

输入
n = 4
输出
2
解释
从上到下写出每一行中皇后所在的列,棋盘分别是 1, 3, 0, 2 和 2, 0, 3, 1:它们互为镜像,计作两种。其他所有摆法都会让两个皇后位于同一列或同一条对角线上。
challenge icon

进阶

你能只统计旋转或镜像棋盘后仍然不同的棋盘吗?当 n = 8 时,92 个棋盘可分为 12 组。

重置代码
def totalNQueens(n):
    # 在这里编写代码

测试 #1

测试 #2

参数

n = 4

预期输出

2