主题:数字递归
swmsky
[专家分:0] 发布于 2008-12-13 12:51:00
各位:
好!想请教一下,
1 2 3
4 5 6
7 8 9
怎样排列成横、竖、撇相加得15。
程序如何编写.(递归或者非递归)
请各位指教。谢谢!!效率越高越好
回复列表 (共2个回复)
沙发
lyh_007 [专家分:20] 发布于 2008-12-21 16:15:00
穷举简单,但效率最低
板凳
天天学习 [专家分:4570] 发布于 2008-12-21 17:20:00
给你一个关于N阶魔方阵的算法.也许对你有用.
Dole Rob算法生成N阶(N为奇数)魔方阵(各行、列、对角线数字之和相等)。该算法的过程为:从1开始,按如下方法依次插入各自然数,直到N^2为止。
a.在第一行的正中插入1。
b.新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。
c.若最近插入的元素是N的整数倍,则选同列的下一行位置为新位置。
例如,当n=3时,魔方阵为:
8 1 6
3 5 7
4 9 2
我来回复