当前位置:文档之家› 奇数阶对称完美幻方的构造方法

奇数阶对称完美幻方的构造方法

奇数阶对称完美幻方的构造方法
奇数阶对称完美幻方的构造方法

任意奇数阶幻方的罗伯移步法

任意奇数阶幻方的罗伯移步法 学习心得 范贤荣2016.2.25 在学习幻方构成时,在网上看到了大多数幻友介绍的罗伯(loubere )法。读后,我有心得如下: 1、罗伯(loubere )法的确是最简单的任意奇数阶幻方的构成法。它只要一步一步 地填写就可以了。 2、有人称之为楼梯法。这也非常形象,体现了一步一步斜着向上的填写规律。因 此,我觉得以罗伯楼梯法谓之,倒是一个好办法,既尊敬了罗伯的创造,又形象地体现 了填写规律。但是,楼梯太实用了,就采用了浪漫点的移步二字,编写了本文的题目。 3、罗伯法的填写步骤,非常经典。关于“出格/出框”、“重复/遇阻”的规定,也往往还被其他方法所引用。 4、罗伯法的口诀,对“1 居上行正中央”的这种幻方,是很正确且准确的。但是,不知道这是不是罗伯老师的原话。我现在看到的都是幻友们的介绍。因此,就与幻友们讨 论一下: 这个口诀,只适用于“1 居上行正中央”的这种幻方。或者说“1居上行正中央”的这种幻方,只是罗伯幻方的一种。 罗伯幻方每一阶都有多种。幻方数与阶数相同。 因此,我建议在这口诀下面加一个注:“1 居上行正中央”只是罗伯幻方有代表性的一种。1 还可以在其他点格上。 5、1 还可以在那些点格上呢? 我们把方阵空格用(X,Y)即(行,列)表示。第一行,第三列表示为(1,3)

那么,各阶数方阵有几个幻方, 1 点在何处,可见下表: 我们还可以形象地用方阵的方式,直观地看到 1 的位置。 5 阶幻方的1 点在幻和为65 的格子内。 方法是: 1)与阶数一样,画出阶数方阵。例如, 5 阶 2)将该阶幻方的幻和填在方阵的“上行正中央”。例如5 阶幻和65。 3)在斜着把幻和,逐行向左移一位,填在各行。如下图 4)再利用罗伯法则,将出格的数移回来。就可以直观地看到 1 在那些点格了。5)顺便说说方阵中的其他数据是什么?从何而来?。这些数据都是一个不等于“幻和”的对角线之和。我是计算出来的,计算完5 阶,我就知道7 阶了。因此,就少画了许多方阵。

2008.6.27_任意阶幻方的构造方法

任意阶幻方的构造方法 一、幻方分类 n 表示阶数 二、构造方法 以下幻方均指在n n ?(n 行n 列)的方格里,既不重复也不遗漏地填上1——2n 所构成的幻方。 1、奇数阶幻方——连续摆数法(如图一:以五阶幻方为例) ① 把1填在第一行正中; ② 把i a ()i ≤2放在1-i a 的右上一格;如:3、5、7、8、20等。 ③ 如果i a 所要放的格已超出了顶行,那么就把它放在1-i a 的右一列的最下行;如:2、9、18、25。 ④ 如果i a 所要放的格已超出了最右列,那么就把它放在1-i a 的上一行的最左列;如:4、10、17、23。 ⑤ 如果i a 所要放的格已超出了顶行且超出了最右列,那么就把它放在1-i a 的下一行的同一列的格内;如:16。 ⑥ 如果i a 所要放的格已有数填入,那么就把它放在1-i a 的下一行的同一列的格内。如:6、11、21。 图一 2、单偶数阶幻方()122+ =m n ——分区调换法(如图二:以六阶幻方为例) ① 把()122+=m n 阶的幻方均分成4个同样的小幻方A 、B 、C 、D ;如图二(a ); (注意A 、B 、C 、D 的相对位置不能改变,因为12+m 为奇数,所以A 、B 、C 、D 均为奇数阶幻方) ② 用连续摆数法在A 中填入21a ——构成幻方,同理,在B 中填入() 2221a a ——+、在

C 中填入()22312a a ——+、在 D 中填入() 22413a a ——+均构成幻方(2n a =);如图二(b ); (因为12+m 为奇数,所以A 、B 、C 、D 均为奇数阶幻方,必然可以用连续摆数法构造幻方) ③ 在A 的中间一行上从左侧的第二列起取m 个方格,在其它行上则从左侧第一列起取m 个方格,把这些方格中的数与D 中相应方格中的数字对调;如图二(c 、d ), (不管是几阶幻方,在A 中取数时都要从中间一行的左侧第二列开始;因为当6=n 时,1=m ,所以本例中只取了一个数) ④ 在C 中从最右一列起在各行中取1-m 个方格,把这些方格中的数与B 中相应方格中的数字对调。 (因为01=- m ,所以在C 中没有取数) 图二(d )即为所求幻方。 图二(a ) 图二(b ) 图二(c ) 图二(d ) 3、双偶数阶幻方m n 4=——轴对称法(如图三:以八阶幻方为例) ① 把m n 4=阶的幻方均分成4个同样的小幻方;如图三(a ) ② 在左上角的小幻方每行每列中任取一半的方格加上底色(以便于区分),然后以轴对称的形式在其它三个小幻方中标出方格;如图三(b ) (正确理解“每行每列中任取一半的方格”。本例中因为4=m ,所以在每个小幻方的每行每列上均取2个方格) ③ 从左上角的方格开始,按从左到右、从上到下的次序将1——64从小到大依次填入n 阶幻方,遇到有底色的方格跳过,计数,这样填满了没有底色的方格;如图三(c )

幻方解法整理归纳

在一个由若干个排列整齐的数组成的正方形中,图中任意一横行、一纵行及对角线的几个数之和都相等,具有这种性质的图表,称为“幻方”。我国古代称为“河图”、“洛书”,又叫“纵横图”。 1、奇数阶幻方——罗伯特法(也有人称之为楼梯法)(如图一:以五阶幻方为例) 奇数阶幻方 n为奇数(n=3,5,7,9,11……) (n=2×k+1,k=1,2,3,4,5……) 奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯法)。填写方法是这样: 把1(或最小的数)放在第一行正中;按以下规律排列剩下的n×n-1个数: (1)每一个数放在前一个数的右上一格; (2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列; (3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行; (4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内; (5)如果这个数所要放的格已经有数填入,处理方法同(4)。 这种写法总是先向“右上”的方向,象是在爬楼梯。 口诀: 1居首行正中央, 依次右上莫相忘 上出格时往下放, 右出格时往左放. 排重便往自下放, 右上出格一个样 图一 2、单偶数阶幻方 ()1 2 2+ =m n ——分区调换法(如图二:以六阶幻方为例) ①把()1 2 2+ =m n阶的幻方均分成4个同样的小幻方A、B、C、D(如图二) 图二

(注意A 、B 、C 、D 的相对位置不能改变,因为12+m 为奇数,所以A 、B 、C 、D 均为奇数阶幻方) ② 用连续摆数法在A 中填入21a ——构成幻方,同理,在B 中填入()2221a a ——+、在C 中填入()22312a a ——+、在D 中填入()22413a a ——+均构成幻方(2n a =)(如图三) 图三 (因为12+m 为奇数,所以A 、B 、C 、D 均为奇数阶幻方,必然可以用连续摆数法构造幻方) ③ 在A 的中间一行上从左侧的第二列起取m 个方格,在其它行上则从左侧第一列起取m 个方格,把这些方格中的数与D 中相应方格中的数字对调(如图四): 图四 不管是几阶幻方,在A 中取数时都要从中间一行的左侧第二列开始;因为当6=n 时,1=m ,所以本例中只取了一个数) ④ 在A 中从最右一列起在各行中取1-m 个方格,把这些方格中的数与D 中相应方格中的数字对调。(如图五) 图五 3、双偶数阶幻方m n 4=——轴对称法(如图三:以八阶幻方为例) ① 把m n 4=阶的幻方均分成4个同样的小幻方(如图六) 图六

(完整版)任意奇数阶幻方的杨辉斜排法

任意奇数阶幻方的杨辉斜排法 ——对杨辉口诀的讨论 范贤荣2016.3.8 关于三阶幻方的排法,我国古代数学家杨辉给出了一个巧妙的排法:“九子斜排,上下对易,左右相更,四维挺出”。按照这个口诀,画出“上下对易,左右相更”之后,形成图1d的图面。因此,必定有一个“四维挺出”的步骤。最后得到“戴九履一,左三右七,二四為肩,六八為足”的三阶幻方。见图1。 图1 杨辉口诀的画法 可见,杨辉口诀是在利用5×5的方格,斜排9个数后,按照他的步骤,仍然是画出5×5方格的3阶的幻方,如图1e。 图2 菱中取方的画法 现在,我们很多人用的是“取方框”画法。即在5×5的方阵中,取出3×3方框来,如图2b的红框。红框外的1,是走到框内的绿方块中,红框外的9,是走到框内的蓝方块中。因此1、9没有“对易”。同样,3、7也没有“相更”。因此,就没有“上下对易,左右相更”了。所以,就不需要“四维挺出”了。因此,现在的画法,与原来的口诀不一致了。 所以,我根据作图的次序,将杨辉的口诀,演绎成: 各子斜排为菱形,中间取方当作城, 城外有子城内空,四围都往城中进。 挺进多少方可止,几阶就挺几步深。 注1:“四围”就是上下左右四边。“都往城中进”,因此是相向而行,都到城中。 注2:“几阶就挺几步深”。如3阶进3步,5阶进5步,7阶进7步……后续亦如此类推。见图2。

下面,我将2~13各奇数阶,由菱方阵演变成幻方的情况,列于后。 图3 5阶菱方阵与幻方 图4 7阶菱方阵与幻方

图5 9阶菱方阵与幻方 图6 11阶菱方阵与幻方

图7 11阶幻方 图8 13阶菱方阵

图9 13阶幻方

魔方阵

问题3.1、n –魔方阵 一、提出问题 所谓“n – 魔方阵”是指由1至n 这n 个不同整数构成的魔方阵,其魔方常数为n ( n + 1 ) / 2。例如,5 – 魔方阵和7 – 魔方阵如图3 – 1所示。易知,这两个魔方阵的魔方常数分别为15和28。 321541543 24321 52154 35432 1 ,4 3217651 76543254321762176543654321732176547654321 图3 – 1 5 – 魔方阵和7 – 魔方阵 n – 魔方阵的数字排列很有规律,若用人工的方法给出并不困难。现在要求给出:能让计算机自动输出n (≥ 3)为奇数时形如图3 – 1所示的n – 魔方阵的算法。 二、简单分析 n – 魔方阵较我们之后将要讨论的奇、偶数阶魔方阵,要简单许多。观察后不难发现: 1.要填入的n 个数字在阵列的每一行和每一列都要出现且仅出现一次,且各行(列)中的数字顺序相同,这里的顺序是指循环顺序,其中数字1接在数字n 的后面。 2.从阵列的行来看,每一行的第一个数字与它上一行正中间的数字相同。 通过对“n – 魔方阵”的分析,下面几个基本问题必须得到解决: ◆ 如何确定阵列第一行各个数字? ◆ 在填入其他行的数字时如何保证数字原有的顺序不改变同时每一行的第一个数字正好是其上一行正中间的数字? 三、设计准备 假设我们要构建的是一个n – 魔方阵,为此定义一个有n 行n 列的二维数组。 1.确定阵列第一行各个数字 这里我们处理的方法很简单,即可以利用循环方法顺序地在二维数组第一行中填写1,2,3,…,n 这n 个自然数即可。 2.填入其他行的数字,并保证数字原有的顺序不改变同时每一行的第一个数字正好是其上一行

数据结构 第5章 魔方阵

数据结构 实验报告第五章 实验名称:魔方阵 实验类型:设计性实验 班级: 学号: 姓名: 实验日期:2014年6月7日 1.问题描述 魔方阵是一个古老的智力问题,它要求在一个m×m的矩阵中填入1~m2的数字(m为奇数),使得每一行、每一列、每条对角线的累加和都相等,如图1所示。 基本要求 ●输入魔方阵的行数m,要求m为奇数,程序对所输入的m作简单的判 断,如m有错,能给出适当的提示信息。 ●实现魔方阵。 ●输出魔方阵。 2.数据结构设计 这个问题的数据结构使用数组就可以解决。 3.算法设计 ●由1开始填数,将1放在第0行的中间位置。 ●将魔方阵想象成上下、左右相接,每次往左上角走一步,会有下列情况: ?左上角超出上方边界,则在最下边相对应的位置填入下一个数字; ?左上角超出左边边界,则在最右边相应的位置填入下一个数字; ?如果按上述方法找到的位置已填入数据,则在同一列下一行填入下 一个数字。 以3×3魔方阵为例,说明其填数过程,如图2所示。

图2 三阶魔方阵的生成过程 由三阶魔方阵的生成过程可知,某一位置(x,y)的左上角的位置是(x-1,y-1),如果x-1≥0,不用调整,否则将其调整为x-1+m;同理,如果y-1≥0,不用调整,否则将其调整为y-1+m。所以,位置(x,y)的左上角的位置可以用求模的方法获得,即: x=(x-1+m)%m y=(y-1+m)%m 如果所求的位置已经有数据了,将该数据填入同一列下一行的位置。这里需要注意的是。此时的x和y已经变成之前的上一行上一列了,如果想变回之前位置的下一行同一列,x需要跨越两行,y需要跨越一列,即: x=(x+2)%m y=(y+1)%m 4.运行、测试与分析 (1)程序开始运行并输入。 (2)输出结果。 (3)容错检验。

偶数阶幻方

偶数阶幻方的一种制作方法-双偶阶、单偶阶幻方 1. 双偶阶幻方(对称交换法) n为偶数,且能被4整除(n=4,8,12,16,20……) (n=4k,k=1,2,3,4,5……) 先说明一个定义。互补:如果两个数字的和,等于幻方最大数和最小数的和,即 n×n+1,称为互补。 先看看4阶幻方的填法:将数字从左到右、从上到下按顺序填写: 这个方阵的对角线,已经用颜色标出。将对角线上的数字,换成与它互补(同色)的数字。 这里,n×n+1 = 4×4+1 = 17;把1换成17-1 = 16;把6换成17-6 = 11;把11换成17-11 = 6……换完后就是一个四阶幻方。 对于n=4k阶幻方,我们先把数字按顺序填写。写好后,按4×4把它划分成k×k个方阵。因为n是4的倍数,一定能用4×4的小方阵分割。然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。

2. 单偶阶幻方(斯特雷奇Ralph Strachey法) n为偶数,且不能被4整除(n=6,10,14,18,22……) (n=4k+2,k=1,2,3,4,5……) 这是三种里面最复杂的幻方。 以n=10为例,10=4×2+2,这时k=2 (1)把方阵分为A,B,C,D四个象限,这样每一个象限肯定是奇数阶。用楼梯法,依次在A象限,D象限,B象限,C象限按奇数阶幻方的填法填数。

(2)在A象限的中间行、中间格开始,按自左向右的方向,标出k 格。A象限的其它行则标出最左边的k格。将这些格,和C象限相对位置上的数,互换位置。

(3)在B象限任一行的中间格,自右向左,标出k-1列。(注:6阶幻方由于k-1=0,所以不用再作B、D象限的数据交换),将B象限标出的这

幻方常规解法汇总

幻方常规解法汇总 没法,组合数学还考幻方构造。这东西不看解法真不会写,虽然没见有啥用,但还是记录下,免得日后再找。按目前填写幻方的方法,是把幻方分成了三类,即奇数阶幻方、双偶阶幻方、单偶阶幻方。下面按这三类幻方,列出最常用解法(考试用,不求强大,只求有效!)。 奇数阶幻方(罗伯法) 奇数阶幻方最经典的填法是罗伯法。填写的方法是: 把1(或最小的数)放在第一行正中;按以下规律排列剩下的(n×n-1)个数: 1、每一个数放在前一个数的右上一格; 2、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列; 3、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行; 4、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内; 5、如果这个数所要放的格已经有数填入,那么就把它放在前一个数的下一行同一列的格内。 例,用该填法获得的5阶幻方: 双偶数阶幻方(对称交换法) 所谓双偶阶幻方就是当n可以被4整除时的偶阶幻方,即4K阶幻方。在说解法之前我们先说明一个“互补数”定义:就是在n 阶幻方中,如果两个数的和等于幻方中最大的数与 1 的和(即n×n+1),我们称它们为一对互补数。如在三阶幻方中,每一对和为10 的数,是一对互补数;在四阶幻方中,每一对和为17 的数,是一对互补数。 双偶数阶幻方的对称交换解法: 先看看4阶幻方的填法:将数字从左到右、从上到下按顺序填写: 内外四个角对角上互补的数相易,(方阵分为两个正方形,外大内小,然后把大正方形的四个对角上的数字对换,小正方形四个对角上的数字对换)即(16,11)(7,10)互换即可。 对于n=4k阶幻方,我们先把数字按顺序填写。写好后,按4×4把它划分成k×k个方阵。因为n是4的倍数,一定能用4×4的小方阵分割。然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。 以8阶幻方为例: (1) 先把数字按顺序填。然后,按

求魔方阵的十种算法

求魔方阵的十种算法 魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。 如3×3的魔方阵: 8 1 6 3 5 7 4 9 2 魔方阵的排列规律如下: (1)将1放在第一行中间一列; (2)从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列); (3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1; (4)当上一个数的列数为n时,下一个数的列数应为1,行数减去1。例如2在第3行最后一列,则3应放在第二行第一列; (5)如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面; 1居上行正中央 依次右上切莫忘 上出框时往下写 右出框时左边放 右上有数下边写 右上出框也一样 一、魔方阵的简介 1.何谓矩阵?矩阵就是由方程组的系数及常数所构成的方阵。把用在解线性方程组上既 方便,又直观。 2.何谓n阶方阵?若一个矩阵是由n个横列与n个纵行所构成,共有个小方格,则称这 个方阵是一个n阶方阵。 3.何谓魔方阵?4 9 2 3 5 7 8 1 6定义:由n*n个数字所组成的n阶方阵,具有各对角线, 各横列与纵行的数字和都相等的性质,称为魔方阵。而这个相等的和称为魔术数字。若填入的数字是从1到n*n,称此种魔方阵为n阶正规魔方阵。 4.最早的魔方阵相传古时为了帮助治水专家大禹统治天下,由水中浮出两只庞大动物背

数阶幻方的编排方法

精心整理 奇数阶幻方的编排方法 简便易学的编排方法。 一、九子排列法 宋朝数学家杨辉在《续古摘奇算法》中,总结“洛书”幻方的编排方法时说:三阶幻方的编排方法是“九子排列,上下对易,左右相更,四维挺出”。 这四个句子是什么意思呢?我们通过下面的一组图来加以理解。 先画出一个3×3的“九宫格”,并在第二列上、下方和第二行左、右边各添加一个虚线格子,把1~9这九个数字按顺序写在如上图所示的三排斜线上,然后上、下对调,左右交换,(因为我 1 2 3 图1) 4 然后把5 5 1 下面以五阶幻方为例,再介绍一种奇数阶幻方的编排方法。步骤如下: ①先画出一个5×5(五行五列)的方格,在方格的四周画出凸阶梯式的虚线方格(如下图1) ②把1~25这二十五个数按斜行方向从左到右依次填入图中(如上图2); ③以3、15、23、11四个数为顶点(实际上就是五阶幻方的四个顶点)画出一个正方形; ④把正方形外面凸出的虚线方格中的数按“上移下,下移上;左移右,右移左”的方法,全部平移5格到对应部分的方格中,擦掉虚线格子,就得到一个五阶幻方(见下图)。 这种编排幻方的方法叫“巴舍法”,也叫平移补空法,它和“罗伯法”一样,也适用于一切的奇数阶幻方的编排。 需要提醒大家注意的是,在步骤②中,填写1~25这二十五个数时,可以从左向右上填写,也可以从右向左上填写,或者从上向右下填写,还可以从上向左下填写,其移动后的结果都是一个五阶幻方,同学们可以自己动手试一试。

另外,编排n 阶幻方时,不一定非要从1开始,只要是这些数能构成等差数列就可以了。 练习(一定要完成的哦) 1、使用“罗伯法”将4~12编排一个三阶幻方。 2、用“罗伯法”将21、31、32、41、4 3、61、121、125、12 7编成一个三阶幻方。 3、使用“巴舍法”将1~49编排一个七阶幻方。 双偶数阶幻方的编排方法 一、中心对称交换法 例1、用1~16这十六个数编排一个四阶幻方(四行四列)。 【分析与解答】用1至16编排一个四阶幻方,就是把1~16这十六个数填入四行四列的方格 34。 是3412+16=40(即2与3,+14+16=58(即8与12例如2又如,9称交换就可以直接得到四阶幻方,把这种编排双偶数阶幻方的办法叫“中心对称交换法”。 由例1可以看到,用“中心对称交换法”编排四阶幻方的主要步骤归纳如下: ①把1~16按顺序排成四阶自然方阵; ②四阶自然方阵中对角线上的八个数不动,作为四阶幻方两条对角线上的数; ③把四阶自然方阵中对角线以外的数作中心对称交换。 运用“中心对称交换法”不仅可以编排四阶幻方,而且可以编排任意的双偶数阶幻方。 例2、用1~64这六十四个数编排一个八阶幻方(八行八列)。 【分析与解答】编排步骤如下: ①把1至64按顺序填入8×8的方格子中,排成八阶自然方阵;(见左下图) ②把八阶自然方阵分成四个四阶自然方阵(左下图粗线条),每个四阶自然方阵分别画出对角

小学思维数学讲义:幻方(一)-带详解

幻方(一) 1. 会用罗伯法填奇数阶幻方 2. 了解偶数阶幻方相关知识点 3. 深入学习三阶幻方 一、幻方起源 也叫纵横图,也就是把数字纵横排列成正方形,因此纵横图又叫幻方.幻方起源于我国,古人还为它编撰了一些神话.传说在大禹治水的年代,陕西的洛水经常大肆泛滥,无论怎样祭祀河神都无济于事,每年人们摆好祭品之后,河中都会爬出一只大乌龟,乌龟壳有九大块,横着数是3行,竖着数是3列,每块乌龟壳上都有几个点点,正好凑成1至9的数字,可是谁也弄不清这些小点点是什么意思.一次,大乌龟又从河里爬上来,一个看热闹的小孩惊叫起来:“瞧多有趣啊,这些点点不论横着加、竖着加还是斜着加,结果都等于十五!”于是人们赶紧把十五份祭品献给河神,说来也怪,河水果然从此不再泛滥了.这个神奇的图案叫做“幻方”,由于它有3行3列,所以叫做“三阶幻方”,这个相等的和叫做“幻和”.“洛书”就是幻和为15的三阶幻方.如下图: 98 76 54321 我国北周时期的数学家甄鸾在《算数记遗》里有一段注解:“九宫者,二四为肩,六八为足,左三右七,戴九履一,五居中央.”这段文字说明了九个数字的排列情况,可见幻方在我国历史悠久.三阶幻方又叫做九宫图,九宫图的幻方民间歌谣是这样的:“四海三山八仙洞,九龙五子一枝连;二七六郎赏月半,周围十五月团圆.”幻方的种类还很多,这节课我们将学习认识了解它们. 二、幻方定义 幻方是指横行、竖列、对角线上数的和都相等的数的方阵,具有这一性质的33?的数阵称作三阶幻方,44?的数阵称作四阶幻方,55?的称作五阶幻方……如图为三阶幻方、四阶幻方的标准式样, 9 87654 32 1 13 414151 6 1297 8 105113 2 16 三、解决这幻方常用的方法 ⑴适用于所有奇数阶幻方的填法有罗伯法.口诀是:一居上行正中央,后数依次右上连.上出框时往下填,右出框时往左填.排重便在下格填,右上排重一个样. ⑵适用于三阶幻方的三大法则有: ①求幻和: 所有数的和÷行数(或列数) ②求中心数:我们把幻方中对角线交点的数叫“中心数”,中心数=幻和÷3. ③角上的数=与它不同行、不同列、不同对角线的两数和÷2. 四、数独 知识点拨 教学目标

偶数阶魔方阵构造方法

偶数阶魔方阵构造方法 2009-11-03 10:23:40| 分类:其他|字号大中小订阅 (1)n = 4k(4的整数倍时) (1) 先将整个方阵划分成k*k个4阶方阵,然后在每个4阶方阵的对角线上做记号 (2) 由左而右、由上而下,遇到没有记号的位置才填数字,但不管是否填入数字,每移动一格数字都要加1 (3) 自右下角开始,由右而左、由下而上,遇到没有数字的位置就填入数字,但每移动一格数字都要加1 例:k=1时构造完如下 16 2 3 13 5 11 10 8 9 7 6 12 4 14 1 5 1 (2)n = 4k + 2 本法填制魔方阵时,先将整个方阵划成田字型的四个2 k + 1阶的奇数阶小方阵,并以下法做注记: 1,右半两个小方阵中大于k+2的列。 2,左半两个小方阵中( k + 1 , k + 1 )的格位。 3,左半两个小方阵中除了( 1 , k + 1 )的格位之外,小于k +1的列。 以奇数阶魔方阵的方法连续填制法依左上、右下、右上、左下的顺序分别填制这四个小方阵。 将上半及下半方阵中有注记的数字对调,魔方阵完成。 例:k=1时构造完如下 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 幻方阵 幻方是什么呢?如右图就是一个幻方,即将n*n(n>=3)个数字放入n*n的方格内,使方格的各行、各列及对角线上各数字之各相等。 我很早就对此非常感兴趣,也有所收获。 8 1 6 3 5 7 4 9 2 本数学模型于1999年9月26日构造。 奇阶幻方 当n为奇数时,我们称幻方为奇阶幻方。可以用Merzirac法与loubere法实现,根据我的研究,发现用国际象棋之马步也可构造出更为神奇的奇幻方,故命名为horse法。 偶阶幻方 当n为偶数时,我们称幻方为偶阶幻方。当n可以被4整除时,我们称该偶阶幻方为双偶幻方;当n不可被4整除时,我们称该偶阶幻方为单偶幻方。可用了Hire法、Strachey以及YinMagic将其实现,Strachey为单偶模型,我对双偶(4m 阶)进行了重新修改,制作了另一个可行的数学模型,称之为Spring。YinMagic 是我于2002年设计的模型,他可以生成任意的偶阶幻方。 在填幻方前我们做如下约定:如填定数字超出幻方格范围,则把幻方看成是可以无限伸展的图形,如下图: Merzirac法生成奇阶幻方 在第一行居中的方格内放1,依次向左上方填入2、3、4…,如果左上方已有数字,则向下移一格继续填写。如下图用Merziral法生成的5阶幻方: 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 loubere法生成奇阶幻方 在居中的方格向上一格内放1,依次向右上方填入2、3、4…,如果右上方已有数字,则向上移二格继续填写。如下图用Louberel法生成的7阶幻方: 30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 1 6 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22 31 40 49 2 11 20 horse法生成奇阶幻方 先在任意一格内放入1。向左走1步,并下走2步放入2(称为马步),向左走1步,并下走2步放入3,依次类推放到n。在n的下方放入n+1(称为跳步),再按上述方法放置到2n,在2n的下边放入2n+1。如下图用Horse法生成的5阶幻方:77 58 39 20 1 72 53 34 15 6 68 49 30 11 73 63 44 25 16 78 59 40 21 2 64 54 35 26 7 69 50 31 12 74 55 45 36 17 79 60 41 22 3 65 46 37 27 8 70 51 32 13 75 56 47 28 18 80 61 42 23 4 66 57 38 19 9 71 52 33 14 76 67 48 29 10 81 62 43 24 5 一般的,令矩阵[1,1]为向右走一步,向上走一步,[-1,0]为向左走一步。则马步可以表示为2X+Y,{X∈{[1,0], [-1,0]},Y∈{[0,1], [0,-1]}}∪{Y∈{[1,0], [-1,0]},X∈{[0,1], [0,-1]}}。对于2X+Y相应的跳步可以为2Y,-Y,X,-Y,X,3X,3X+3Y。上面的的是X型跳步。Horse法生成的幻方为魔鬼幻方。 Hire法生成偶阶幻方 将n阶幻方看作一个矩阵,记为A,其中的第i行j列方格内的数字记为a(i,j)。在A内两对角线上填写1、2、3、……、n,各行再填写1、2、3、……、n,使各行各列数字之和为n*(n+1)/2。填写方法为:第1行从n到1填写,从第2行到第n/2行按从1到进行填写(第2行第1列填n,第2行第n列填1),从第n/2+1到第n 行按n到1进行填写,对角线的方格内数字不变。如下所示为6阶填写方法: 1 5 4 3 2 6 6 2 3 4 5 1 1 2 3 4 5 6

(纯c语言运行通过)任意阶魔阵算法及规律

任意阶魔方阵算法 20012-05-30 22:51:00| 分类:魔阶作者:王狼杰 我一直就对魔方阵很感兴趣,特别是知道了奇数阶魔方阵的罗伯特算法后,就特别想知道偶数阶魔方阵应有什么算法。当时书上说偶数阶魔方阵比较复杂。都没有什么说明。因此这个问题一直搁在我心里很久,已差不多快忘记了。今天突然又想到了这个问题。于是我开始在网上搜寻,看能不能找到什么好的算法。记得在高中的时候,我就做过魔方阵,当时我从三阶一直做到过八阶方阵,不过用的是人工的方法。到大学的时候我知道了罗伯特算法后,我就用程序将算法写了出来。于是我今天准备把偶数阶的魔方阵也写出来。在网上终于找到了一个比较好的算法。将该算法用C写了出来。供大家分亨。 1、奇数阶幻方 n为奇数(n=3,5,7,9,11……) (n=2*k+1,k=1,2,3,4,5……) 奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯方)。填写方法是这样: 把1(或最小的数)放在第一行正中;按以下规律排列剩下的n*n-1个数: (1)、每一个数放在前一个数的右上一格; (2)、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列; (3)、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行; (4)、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内; (5)、如果这个数所要放的格已经有数填入,处理方法同(4)。 这种写法总是先向“右上”的方向,象是在爬楼梯。

2、双偶阶幻方 n为偶数,且能被4整除(n=4,8,12,16,20……) (n=4k,k=1,2,3,4,5……) 先说明一个定义: 互补:如果两个数字的和,等于幻方最大数和最小数的和,即n*n+1,称为互补。 先看看4阶幻方的填法:将数字从左到右、从上到下按顺序填写: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 这个方阵的对角线,已经用蓝色标出。将对角线上的数字,换成与它互补的数字。 这里,n*n+1 = 4*4+1 = 17; 把1换成17-1 = 16;把6换成17-6 = 11;把11换成17-11 = 6……换完后就是一个四阶幻方。 16 2 3 13 5 11 10 8 9 7 6 12 4 14 1 5 1 对于n=4k阶幻方,我们先把数字按顺序填写。写好后,按4*4把它划分成k*k个方阵。因为n是4的倍数,一定能用4*4的小方阵分割。然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。下面是8阶幻方的作法:(1) 先把数字按顺序填。然后,按4*4把它分割成2*2个小方阵 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

幻方

奇数阶幻方 教授(带图) 11 18 25 2 9 10 12 19 21 3 4 6 13 20 22 23 5 7 14 16 17 24 1 8 15 (1)五阶幻方

(2)七阶幻方

22 31 40 49 2 11 20 21 23 32 41 43 3 12 13 15 24 33 42 44 4 5 14 16 25 34 36 45 46 6 8 17 26 35 37 38 47 7 9 18 27 29 30 39 48 1 10 19 28 (1)幻方简介: 幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。幻方也是一种汉族传统游戏。旧时在官府、学堂多见。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形,使在同一行、同一列和同一对角线上的几个数的和都相等。

在一个由若干个排列整齐的数组成的正方形中,图中任意一横行、一纵行及对角线的几个数之和都相等,具有这种性质的图表,称为“幻方”。中国古代称为“河图”、“洛书”,又叫“纵横图”。幻方也称纵横图、魔方、魔阵,发源于中国古代的洛书——九宫图。公元前一世纪,西汉宣帝时的博士戴德在他的政治礼仪著作《大戴礼·明堂篇》中就有“二、九、四、七、五、三、六、一、八”的洛书九宫数记载。2500年前,孔子在他研究《易经》的著作《系词上传》中记载了:“河出图,洛出书,圣人则之。”最早将数字与洛书相连的记载是2300年前的《庄子·天运》,它认为:“天有六极五常,帝王顺之则治,逆之则凶。九洛之事,治成德备,监照下土,天下戴之,此谓上皇。”明代数学家程大位在《算法统宗》中也曾发出“数何肇?其肇自图、书乎?伏羲得之以画卦,大禹得之以序畴,列圣得之以开物”的感叹,大意是说,数起源于远古时代黄河出现的河图与洛水出现的洛书,伏羲依靠河图画出八卦,大禹按照洛书划分九州,并制定治理天下的九类大法,圣人们根据它们演绎出各种治国安邦的良策,对人类社会与自然界的认识也得到步步深化。 《周易本义》中的《洛书》,一个三阶幻方 宋杨辉著《续古摘奇算法》中曾叙述三阶幻方构造法:“九子斜排,上下对易,左右相更,四维挺出,戴九履一,左三右七,二四为肩,六八为足”。 (2)解幻方方法: 1、奇数阶幻方——罗伯特法(也有人称之为楼梯法)(如图一:以五阶幻方为例) 奇数阶幻方 n为奇数(n=3,5,7,9,11……) (n=2×k+1,k=1,2,3,4,5……) 奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯法)。填写方法是这样: 把1(或最小的数)放在第一行正中;按以下规律排列剩下的n×n-1个数: (1)每一个数放在前一个数的右上一格; (2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列; (3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行; (4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内; (5)如果这个数所要放的格已经有数填入,处理方法同(4)。 这种写法总是先向“右上”的方向,象是在爬楼梯。

构造幻方

构造幻方 所谓幻方,也教纵横图,就是在n×n的方阵中放入1到n2个自然数:在一定的布局下,其各行、各列和两条对角线上的数字之和正好都相等。这个和数就叫做“幻方常数”或幻和。 幻方分为奇数阶幻方、偶数阶幻方(单偶阶幻方、双偶阶幻方),下面就这三类幻方的构造分别示范。 奇数阶幻方的经典方法-罗伯 奇数阶幻方,也就是3阶、5阶、7阶……幻方,那么如何构造这样的幻方呢? 我们可以采取罗伯法(也叫连续摆数法),其法则如下: 把“1”放在中间一列最上边的方格中,从它开始,按对角线方向(比如说按从左下到右上的方向)顺次把由小到大的各数放入各方格中,如果碰到顶,则折向底,如果到达右侧,则转向左侧,如果进行中轮到的方格中已有数或到达右上角,则退至前一格的下方。 按照这一法则建立5阶幻方的示例如下图: 罗伯法(连续摆数法)的助记口诀: 1居上行正中央,依次斜填切莫忘。 上出框界往下写,右出框时左边放。 重复便在下格填,角上出格一个样。 1居上行正中央——数字1放在首行最中间的格子中 依次斜填切莫忘——向右上角斜行,依次填入数字 上出框界往下写——如果右上方向出了上边界,就以出框后的虚拟方格位置为基准,将数字竖直降落至底行对应的格子中 右出框时左边放——同上,向右出了边界,就以出框后的虚拟方格位置为基准,将数字平移至最左列对应的格子中 重复便在下格填——如果数字{N}右上的格子已被其它数字占领,就将{N +1}填写在{N}下面的格子中 角上出格一个样——如果朝右上角出界,和“重复”的情况做同样处理。

偶数阶幻方的一种制作方法——双偶阶、单偶阶幻方 1.双偶阶幻方(中心对称交换法) n为偶数,且能被4整除(n=4,8,12,16,20……)(n=4k,k=1,2,3,4,5……) 先说明一个定义。互补:如果两个数字的和,等于幻方最大数和最小数的和,即n×n+1,称为互补。 先看看4阶幻方的填法:将数字从左到右、从上到下按顺序填写: 这个方阵的对角线,已经用颜色标出。将对角线上的数字,换成与它互补(同色)的数字。 这里,n×n+1=4×4+1=17;把1换成17-1=16;把6换成17-6=11;把11 换成17-11=6……换完后就是一个四阶幻方。 对于n=4k阶幻方,我们先把数字按顺序填写。写好后,按4×4把它划分成k×k个方阵。因为n是4的倍数,一定能用4×4的小方阵分割。然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。

c语言奇数魔方阵

魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2…n的平方的n×n 的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。 如3×3的魔方阵: 8 1 6 =15 3 5 7 =15 4 9 2 =15 || || || 15 15 15 15(对角线) 魔方阵的排列规律(奇数阵): 1.将1放在第一行中间一列。 2.从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1。 3.如果上一个数的行数为1,则下一个数的行数为n,列数加1。如果上一个数的列数的n时,下一个数的列数为1,行数减1。 4.如果按上面的规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。 #include main() { int a[16][16],i,j,k,p,n; p=1; while(p==1) /*要求阶数为1~15的奇数*/ { printf("Enter n(n=1~15):"); scanf("%d",&n); if((n!=0)&&(n<=15)&&(n%2!=0)) p=0; } for(i=1;i<=n;i++) /*初始化*/ for(j=1;j<=n;j++) a[i][j]=0; j=n/2+1; /*建立魔方阵*/ a[1][j]=1; i=1; for(k=2;k<=n*n;k++) { i=i-1;

j=j+1; if((i<1)&&(j>n)) /*上一个数是第一行第n列时,则把下一个数放在上一个数的下面*/ { i=i+2; j=j-1; } else { if(i<1) i=n; /*上一个数的行数为1,则下一个数的行数为n,上一个数的列数的n时,下一个数的列数为1*/ if(j>n) j=1; } if(a[i][j]==0) a[i][j]=k; else { i=i+2; /*如果按上面的规则确定的位置上已有数,则把下一个数放在上一个数的下面*/ j=j-1; a[i][j]=k; } } for(i=1;i<=n;i++) /*输出魔方阵*/ { for(j=1;j<=n;j++) printf("%4d",a[i][j]); printf("\n"); } } n=5:

奇数阶幻方

三阶幻方的解法 第一种:杨辉法:九子斜排,上下对易,左右相更,四维挺出。 1 2 4 3 5 7 6 8 9 2 9 4 7 5 3 6 1 8 第二种:九宫图也是幻方的别称,三阶幻方就是著名的洛书,他的排列是::“戴九履一,左三右七,二四为肩,六八为足,五居中央(9在上中,1在下中。7在左中,3在右中,2在左上,4在右上,6在左下,8在右下,正中央5) 第三种:罗伯法:最小的数据上行中央,依次向右上方斜填,上出框往下写,右出框往左填,排重便在下格填,右上排重一个样 8 1 6 3 5 7 4 9 2 四阶幻方的解法 1、先把这16个数字按顺序从小到到排成一个4乘4的方阵 2、内外四个角对角上互补的数相易,(方阵分为两个正方形,外大内小,然后把大正方形的四个对角上的数字对换,小正方形四个对角上的数字对换)即(1,16)(4,13)互换 (6,11)(7,10)互换 16 2 3 13 5 11 10 8 9 7 6 12 4 14 1 5 1 另:对于n=4k阶幻方,我们先把数字按顺序填写。写好后,按4*4把它划分成k*k个方阵。因为n是4的倍数,一定能用4*4的小方阵分割。然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。 五阶幻方的解法:罗伯法:最小的数据上行中央,依次向右上方斜填,上出框往下写,右出框往左填,排重便在下格填,右上排重一个样。 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 (在最上一行的中间填1,接着在1的右上方填2,由于1在最上一行, 所以1的右上方应该是第五行的第四个, 接下来在2的右上方填3,3的右上方应该是第三行第一个,所以在此填4,在4的右

数据结构课程设计之奇数魔方阵

长沙理工大学 《数据结构》课程设计报告 田晓辉 学 院 计算机与通信工程 专 业 计算机科学与技术 班 级 计08-01 学 号 200850080110 学生姓名 田晓辉 指导教师 陈倩诒 课程成绩 完成日期 2010年7月10日

课程设计成绩评定 学院计算机与通信工程专业计算机科学与技术班级计08-01学号200850080110 学生姓名田晓辉指导教师陈倩诒 完成日期2010年7月10日 指导教师对学生在课程设计中的评价 评分项目优良中及格不及格课程设计中的创造性成果 学生掌握课程内容的程度 课程设计完成情况 课程设计动手能力 文字表达 学习态度 规范要求 课程设计论文的质量 指导教师对课程设计的评定意见 综合成绩指导教师签字 2010年7月10日

课程设计任务书 计算机与通信工程学院计算机科学技术专业 课程名称数据结构课程设计时间2010学年第2学期18~19周学生姓名田晓辉指导老师陈倩诒 题目用C语言解决魔方阵问题 主要内容:建立一个n*n阶的矩阵,在这个矩阵中填入1到n2(n为奇数)个数,使得每行、每列以及每条对角线的和相等。 要求: (1)通过实际项目的分析、设计、编码、测试等工作,掌握用C 语言来开发和维护软件。 (2)按要求编写课程设计报告书,能正确编写分析、设计、编码、测试等技术文档和用户使用手册。 应当提交的文件: (1)课程设计学年论文。 (2)课程设计附件(主要是源程序)。

用C语言解决魔方阵的问题 学生姓名:田晓辉指导老师:陈倩诒 摘要本课程设计主要解决设计一个n×n的矩阵中填入1到n2的数字(n为奇数),使得每一行、每一列、每条对角线的累加和都相等的问题。在课程设计中,系统开发平台为Windows 7,程序设计语言采用Visual C++6.0,程序运行平台为Windows 98/2000/XP/7。在程序设计中,采用了C 语言结构化程序设计思想和过程设计方法,以功能函数为基本结构,对问题中的要求做出了准确的实现。程序通过调试运行,初步实现了设计目标。 关键词程序设计;C++6.0;结构化;过程设计;功能函数

相关主题
文本预览
相关文档 最新文档