#P10889. n皇后问题
n皇后问题
题目描述
八皇后问题由国际象棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 的国际象棋棋盘上摆放 8 个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。问有多少种摆法?
下图就是其中一种解法(图略)。

当然,八皇后问题的规则也可以推广到 n 皇后问题。例如,一个六皇后问题如下:
在一个 6×6 的棋盘上,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。

这个布局可以用序列 2 4 6 1 3 5 来描述,其中第 i 个数字表示在第 i 行的相应位置有一个棋子。对应关系为:
- 行号:1 2 3 4 5 6
- 列号:2 4 6 1 3 5
这只是一个解。请编写程序找出所有棋子的放置解。
所有解需按照上述序列方法输出,并按 字典序 排列。
最后一行输出解的总个数。
输入格式
一行一个正整数 n,表示棋盘大小为 n×n。
输出格式
- 输出所有解,每行一个解。
- 每个解中相邻两个数字之间用一个空格隔开。
- 最后一行只输出一个整数,表示解的总数。
输入样例 #1
6
输出样例 #1
2 4 6 1 3 5
3 6 2 5 1 4
4 1 5 2 6 3
5 3 1 6 4 2
4
题目说明
- 数据范围:
对于 100% 的数据,6 ≤ n ≤ 13。