求 偶数阶魔方和的算法。

hqycxy 2005-05-14 09:39:54
如题。

对于奇数阶魔方和, 可以有罗伯特法,可是偶数阶,以前看书说,好像没有一般解法。
求达人指教。

谢谢了。
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qrlvls 2005-05-15
  • 打赏
  • 举报
回复
tq01oyf 2005-05-15
  • 打赏
  • 举报
回复
search应该就有不少^
xmyjd 2005-05-14
  • 打赏
  • 举报
回复
1)、当n为奇数时:采用连续斜行赋值法。首先把数1定在正中的下一格,数2定在1的斜行右下格,依此类推。即一般数i定在数i-1的斜行右下格(行数x列数y均增1)。直至当数i为n的倍数时,定在上一个数i-1格正下方的第2格(行数x增2,列数y不变)。按上述操作,格的位置(x,y)若超出n行n列的范围,按模n定位。即若出现x>n,则定在第x-n行;出现y>n,则定在第y-n列。
  2)、当n为4的倍数时:采用对称元素交换法。首先把数n×n-1按行从上至下,奇数行从左至右,偶数行从右至左顺序填人方阵的n×n格。然后,把方阵的所有4×4子方阵中的两对角线上位置(即(i-j) mod 4=0||(i+j-1) mod 4=0,其中i为行号,j为列号)上的数固定下来不动;所有其它位置上的数关于方阵中心作对称交换,也就是把元素a(i,j)与元素a(n+1-i,n+1-j)的值交换。
3)、当n为非4倍数的偶数(即4m+2形)时:首先把大方阵分解为4个奇数(2m+1阶)子方阵。上述奇数阶魔方给分解的4个子方阵对应赋值,上左子方最小(i),下右子次小(i+v),下左子方最大(i+3v),上右子方次大(i+2v),即4个子方阵对应元素相差v,其中v=n*n/4,然后作相应的元素交换:
  a(i,j)与a(i+u,j)在同一列做对应交换(j<t或j>n-t+2)
  a(t,1)与a(t+u,1);a(t,t)与a(t+u,t)两对元素交换
  其中u=n/2,t=(n+2)/4
  上述交换使每行每列与两对角线上元素之和相等。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧