CodeACM
HOT 100 · 回溯 · LC 51

N 皇后:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

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

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

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

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

输入格式

输入一个整数 n。

输出格式

第一行输出方案数 m。每个方案输出 n 行,由 Q 和 . 表示棋盘,方案之间输出一个空行;方案按行字符串序列的字典序排列。

数据范围

  • 1 ≤ n ≤ 9
  • 每行每列恰好放置一个皇后

公开样例

样例 1

输入

4

输出

2
.Q..
...Q
Q...
..Q.

..Q.
Q...
...Q
.Q..

4 皇后问题共存在两个不同的解法。

样例 2

输入

1

输出

1
Q

一阶棋盘只有一个位置。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。