明朝士兵军饷:奇偶阶幻方怎么制作呀?

来源:百度文库 编辑:神马品牌网 时间:2024/05/03 08:02:30
我查了很多书和网站,就是找不到。。。
哪位大哥行行好,告诉我。。。
有没有幻方高手?加我QQ!!!
我QQ:541982906

幻方构造方法:(有很多种,这里只举出几种)
奇数阶:
n=2*m+1,m为自然数
1)将数字1填在(0,(n+1)/2) ;要注意c中是从下标0开始
2)从左上往右下依次填。
3)由2),列的下标出界(超过n-1)时,行加1,以n为摸的余数为应填的列数;
4)由2),行的下标出界(超过n-1)时,列加1,以n为摸的余数为应填的行数;
5)由2),行列都未出界,但已添上其他数,应在当前位置左横移一个位置进行填数。

然后是偶数阶:
前一种:n=4*m+2, m为自然数
1)将n阶方阵分为四个小魔方阵ABCD如下排列:

B C
D A

因为n*n=4*(2*m+1)*(2*m+1),
记u=n/2=2*m+1,分为1~u*u,u*u+1~2*u*u,2*u*u+1~3*u*u,3*u*u+1~4*u*u
即在调用子函数的时候分别如下面传递参数:
A(0),B(u*u),C(2*u*u),D(3*u*u)
分别在ABCD中按照前面的填法把奇数阶填好(注意加上所传参数作为基数,每一个元素都要加上这个值),最后做如下交换:
(1)B中第0~(m-1)-1行中元素与C中相对应元素交换
(2)D中第(n-1)-m+1~(n-1)共m行的每行中的元素与A中相对应元素交换
(3)交换D:(u+m,m)与A中对应元素(矩阵中心值)
(4)交换D:(n-1,m)与A中对应元素(实际为矩阵最大值n*n)

所谓对应位置,指相对于小魔方阵的左顶角的相对的行列位置
上面的这些你可以用数学进行证明,利用魔方阵常数(注意n阶的和u阶的关系)

后一种:n=4*m,m为自然数
因为行列都是4的倍数,因而可以将整个矩阵分为每4*4的小矩阵。
先判断一个数是否在划为4*4小矩阵的对角线上,
如果在,则填该位置的数为n*n-i+1(i为该元素的相对位置,从1开始,比如n阶的第s行第t个元素则其i=s*n+t)
如果不在,则填上i。
参考资料:http://www.faq-it.org/archives/structure/2ae241192e129bc795deb5a721562f3d.php

科学出版社有套《好玩的数学》,里面有本吴鹤龄写的《幻方及其他——娱乐数学经典名题》,其中有详尽的介绍,各大书店和图书馆应该都有。