#7255. [USACO1.5] 八皇后 Checker Challenge

[USACO1.5] 八皇后 Checker Challenge

Description

检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子,如下例,就是一种正确的布局。

0   1   2   3   4   5   6  
  -------------------------  
1 |   | O |   |   |   |   |
  -------------------------  
2 |   |   |   | O |   |   |
  -------------------------  
3 |   |   |   |   |   | O |
  -------------------------  
4 | O |   |   |   |   |   |
  -------------------------  
5 |   |   | O |   |   |   |
  -------------------------  
6 |   |   |   |   | O |   |
  -------------------------  

上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下: 行号 1 2 3 4 5 6 列号 2 4 6 1 3 5 这只是跳棋放置的一个解。请写一个程序找出所有跳棋放置的解,并把它们以上面的序列方法输出。解按字典顺序排列,请输出前3个解,最后一行是解的总个数。

Input Format

一个数字N (6<=N<=14) 表示棋盘是N x N大小的。

Output Format

前三行为前三个解,每个解的两个数字之间用一个空格隔开。第四行只有一个数字,表示解的总数。

6
2 4 6 1 3 5
3 6 2 5 1 4
4 1 5 2 6 3
4

Hint

【数据范围】 对于100% 的数据,6≤n≤13。 USACO Training Section 1.5