回 帖 发 新 帖 刷新版面

主题:[经典问题]魔术方块

九宫格大家都知道吧,就是每行、每列、对角线的数字总和必须相等,如下列数字排列:
6  1  8
7  5  3
2  9  4
这里就是改变它,使他是n*n(n为奇数,且大于1)的方格,要求不变。

输入n,打印出n*n的魔术方块。

我想这种入门级的题目大家应该知道怎么做吧~~~~~~~~~~~~~~~

回复列表 (共9个回复)

沙发

不是吧,没人会做么?

共布算法了~~~~~~~~~~~~~~~~~~~~~~~~~

先把1放在第1行第(n+1)/2列,
然后把后来的数放到前一个数的左上角,当行号<1时,则让行号为最大号(n);当列号<1时,让列号为最大号(n)。
若某一空格已有数存在,则填在该数同列的下一格,当数字填到左上角时,下一个数在该数下方。

如:n=5:
15    8    1   24   17
16   14    7    5   23
22   20   13    6    4
3   21   19   12   10
9    2   25   18   11

算法都公布了,程序就大家自己写吧~~~~~~~~~~~~~~~

板凳

我是没有看到~~~~
早就看过了~~~~~
书上的例题~~~

3 楼

当我傻子啊.
全国青少年信息学奥林匹克联赛培训教材(中学)
第六章 数组 
例6-13(P97)!!
自己慢慢找吧.

4 楼

别个不一定有这本书呀~~~~

5 楼

3楼的:你怎么早不说呀?等我公布了你才说!那就不应该怪我当你是傻子~~~~~~~~

6 楼

我又没说你当我是傻子~~~~
我支持你撒~~~~~
这种题拿出来看看还是可以~~~
这么多书把它拿来当例题说明这个题还是很经典的呀`~~~~~

CXXX401说你当他是傻子~~~~

7 楼

楼上的:这件事与你无关,我知道你是好人啦,我是说3楼的!

8 楼

我以为我就在3楼呢~~~~~

9 楼

呵呵~~~~~~~~~~~~

我来回复

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