(纵横图问题)(n阶奇数幻方)

来源:互联网 发布:网络电影如何盈利 编辑:程序博客网 时间:2024/04/30 05:31

 当n为奇数时,一般称为“n阶奇数幻方”,下面我们也只讨论n为奇数的情况。首先,n阶奇数幻方是存在的。可以验证它不是唯一的,因为把这个数字方阵对称、旋转后可得到若干个依然满足题目的方阵。

  构建n阶奇数幻方的方法一般如下:把1放在第一行的正中间,对于后面的任意一个数i(i从2到n*n),如果它的前一个数是n的倍数,则i的位置应该放在前一个数的正下方;

否则,i的位置应该放在前一个数的右上方。当然,如果过程中出现i的位置超过了棋盘,则应该把它拉回来(即出现在第i行的上面则变成第n行,出现在第n列的右边则变成第一列)。


下面也是一个建立思路。

设计一个程序,打印“魔方阵”,所谓“魔方阵”是指每一行、每一列和对角线之和均相等的方阵。例如:

       
设计说明:在这个题目中,关键问题是要知道构造“魔方阵”的算法。下面就是一个人们普遍应用的“魔方阵”算法。
  (1)首先将数值1放在第1行中间的位置。
  (2)从2开始到N2(N要为奇数)为止,按照下列规则放置每个数值:

  如果上一个数值的右上方为空(数组元素为0表示该位置为空),则当前数值放在上一个数值的右上方;否则放在上一个数值的正下方。


1 0
原创粉丝点击