回 帖 发 新 帖 刷新版面

主题:数字递归

各位:
  好!想请教一下,
1 2 3
4 5 6
7 8 9
怎样排列成横、竖、撇相加得15。

程序如何编写.(递归或者非递归)

请各位指教。谢谢!!效率越高越好

回复列表 (共2个回复)

沙发

穷举简单,但效率最低

板凳

给你一个关于N阶魔方阵的算法.也许对你有用.
Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N^2为止。

a.在第一行的正中插入1。

b.新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。

c.若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。

例如,当n=3时,魔方阵为: 

 8 1 6 

 3 5 7 

 4 9 2

我来回复

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