回 帖 发 新 帖 刷新版面

主题:[讨论]填数问题

在n*n的棋盘上(1<=n<=10)填入1,2,3……n*n,共n*n个数,使得任意两个相邻数之和为质数(上下和左右相邻都算)。
输入:n
输出:一个n*n的矩阵
[color=FF0000](注意:当有多种解时,输出第一行第一列总和最小的那个解)[/color]

样例:n=2
输出: 1  2
       4  3
样例:=4
输出(第一行第一列总和最小):
1 2 11 12
16 15 8 5
13 4 9 14
6 7 10 3

问基本方法。。

回复列表 (共8个回复)

沙发

还是递归和回朔的结合。

素数环就是这样解的。

板凳

不过这个和素数环不一样,因为是二维的,需要考虑2个方向。

3 楼


谢了,素数环是什么?能复述一下题目吗?

4 楼

素数环:

把1-n的数摆成一个环,使相邻2个数的和是素数。

比如n=6(n只有是偶数才有结果),有以下素数环:

                   1
               4       6
               3       5
                   2

5 楼


xiexie!!

6 楼

[url=http://www.programfan.com/club/post-243523.html]素数环的程序[/url]

可能会对你有点启发。

7 楼


xiexie

8 楼

PASCAL初级本上有,但不能实现当有多种解时,输出第一行第一列总和最小的那个解.
只能设一个MAX数组,用打擂台的方法找最大的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册