[NOIP 1997 提高组] 棋盘问题


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C++

P1549 [NOIP 1997 提高组] 棋盘问题

题目背景

NOIP1997 提高组第一题

P5512 为本题数据加强版。

本题实际的数据的范围是 \(1\le N\le 5\)。不保证存在可以通过原数据范围的非打表做法。

题目描述

在 \(N \times N\)(\(1 \le N \le 10\))的棋盘上,填入 \(1, 2, \dots, N ^ 2\) 共 \(N ^ 2\) 个数,使得任意两个相邻的数之和为素数。

例如:当 \(N = 2\) 时,有:

\(1\) \(2\)
\(4\) \(3\)

其相邻数的和为素数的有:

\(1+2,1+4,4+3,2+3\)

当 \(N=4\) 时,一种可以填写的方案如下:

\(1\) \(2\) \(11\) \(12\)
\(16\) \(15\) \(8\) \(5\)
\(13\) \(4\) \(9\) \(14\)
\(6\) \(7\) \(10\) \(3\)

在这里我们约定:左上角的格子里必须填数字 \(1\)。

输入格式

一个数 \(N\)。

输出格式

如有多种解,则输出第一行、第一列之和为最小的排列方案;若无解,则输出 NO

输入输出样例 #1

输入 #1
1
输出 #1
NO

输入输出样例 #2

输入 #2
2
输出 #2
1 2
4 3

Comments

There are no comments at the moment.