主题:[讨论]填数问题
cmy28
[专家分:380] 发布于 2007-07-22 11:41:00
在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个回复)
沙发
Matodied [专家分:7560] 发布于 2007-07-22 14:32:00
还是递归和回朔的结合。
素数环就是这样解的。
板凳
Matodied [专家分:7560] 发布于 2007-07-22 14:48:00
不过这个和素数环不一样,因为是二维的,需要考虑2个方向。
3 楼
cmy28 [专家分:380] 发布于 2007-07-22 15:44:00
谢了,素数环是什么?能复述一下题目吗?
4 楼
Matodied [专家分:7560] 发布于 2007-07-22 20:42:00
素数环:
把1-n的数摆成一个环,使相邻2个数的和是素数。
比如n=6(n只有是偶数才有结果),有以下素数环:
1
4 6
3 5
2
5 楼
cmy28 [专家分:380] 发布于 2007-07-22 20:53:00
xiexie!!
6 楼
Matodied [专家分:7560] 发布于 2007-07-22 21:00:00
[url=http://www.programfan.com/club/post-243523.html]素数环的程序[/url]
可能会对你有点启发。
7 楼
cmy28 [专家分:380] 发布于 2007-07-22 21:49:00
xiexie
8 楼
JRX [专家分:180] 发布于 2007-08-29 21:23:00
PASCAL初级本上有,但不能实现当有多种解时,输出第一行第一列总和最小的那个解.
只能设一个MAX数组,用打擂台的方法找最大的.
我来回复