数据结构与算法专题题库

1012. n皇后问题

单点时限: 2.0 sec

内存限制: 512 MB

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

两个皇后可以攻击当且仅当:

  • 两个皇后在同一行
  • 两个皇后在同一列
  • 两个皇后在同一对角线

给定一个数$ n $,输出所有可能的方案。

对于8皇后问题的一个解为4,7,3,8,2,5,1,6,表示8个皇后分别位于坐标(1,4),(2,7),(3,3),(4,8),(5,2),(6,5),(7,1),(8,6)。

输入格式

一个数$n$。
其中$n \leq 12$

输出格式

若干行,每行$n$个数。
按照字典序从小到大输出。
如果无解则不输出任何东西。

样例

Input
4
Output
2 4 1 3
3 1 4 2

提示

直接枚举所有情况的复杂度是$O(n!)$会TLE的。
假设两个皇后位于$(x_1,y_1),(x_2,y_2)$,则冲突的条件为$x_1==x_2 || y_1==y_2 || (x_1+y_1)==(x_2+y_2) || (x_1-y_1)==(x_2-y_2)$

不限期开放

题目列表