奇数阶魔方阵算法分析【荐】.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
奇数阶魔方阵 一、提出问题 所谓“奇数阶魔方阵”是指n为不小于3的奇数的魔方阵。这类魔方阵的形式多样,这里我们仅讨论其中的一种形式的正规魔方阵。例如:3阶、5阶和7阶的魔方阵如图3 – 4 所示。 , , 图3 – 4 3阶5阶和7阶魔方阵 容易知道,这三个魔方阵的魔方常数分别是15、65和175。 现在要求给出:能让计算机自动输出类似图3 – 4 所示的n阶奇数魔方阵的算法,其中n为任意给定的一个不小于3的奇数。 二、简单分析 决定“奇数阶魔方阵”的关键是要按要求决定其方阵中的各个数字。观察图3 – 4中的三个奇数阶魔方阵,不难发现: 1.由于是正规魔方,故所填入的n 2个不同整数依次为1、2、3、…、n 2 ; 2.各行、列和对角线上的数字虽各不相同,但其和却是相同的。这表明,其魔方常数可由公式n ( n 2 + 1 ) / 2得到。 3.数字在阵列中的次序,并没有遵从阵列单元的行、列下标的顺序,但数字“1”却始终出现在阵列第一行的正中间位置,而数字“n 2”也始终出现在阵列第n行的正中间位置,这说明阵列中的数字排列应该是有一定规律的。 通过对两个奇数阶魔方阵的简单分析,下面几个基本问题必须得到解决: ◆ 奇数阶魔方阵中的数字有些什么规律? ◆ 数字“1”的位置应如何确定? 三、设计准备 1.奇数阶魔方阵中的数字规律 通过对奇数阶魔方阵的分析,其中的数字排列有如下的规律: (1)自然数1出现在第一行的正中间; (2)若填入的数字在第一行(不在第n列),则下一个数字在第n行(最后一行)且列数加1(列数右移一列); (3)若填入的数字在该行的最右侧,则下一个数字就填在上一行的最左侧; (4)一般地,下一个数字在前一个数字的右上方(行数少1,列数加1); (5)若应填的地方已经有数字或在方阵之外,则下一个数字就填在前一个数字的下方。(一般地,n的倍数的下一个数字是在该数的下方。) 按照上述的规律,我们来完成3阶的魔方阵: 第一步:将“1”填入1行2列的位置,即(按规律(1)); 第二步:将“2”填入3 (最后) 行3 ( = 2 + 1 )列的位置,即(按规律(2)); 第三步:将“3”填入2行1列的位置,即(按规律(3)); 第四步:将“4”填入3行1列的位置(“3”的下面);即(按规律(5)) 第五步:将“5”填入2行2列的位置;即(按规律(4)); 第六步:将“6”填入1行3列的位置,即(按规律(4)); 第七步:将“7”填入2行3列的位置(“6”的下面),即(按规律(5)); 第八步:将“8”填入1行1列的位置,即(按规律(3)); 第九步:将“9”填入3行2列的位置,即(按规律(2))。 至此,一个3阶魔方阵构造完成了。 2.数字“1”的位置确定方法 由于数字“1”要填写在魔方阵第一行的正中间,因此我们只需要确定第一行的正中间单元的列下标即可。 考虑到对于一个奇数阶魔方阵来说,它的每一行都有奇数个位置,所以“正中间的位置”就必然存在。容易知道,一个n(为奇数)阶魔方阵第一行的正中间单元的列下标为整数 ( n + 1 ) / 2。于是数字“1”应填写在魔方阵列的第1行第 ( n + 1 ) / 2列处。 四、实施步骤 1.算法编制的工作顺序: 有了上述的设计准备,我们所要的算法可按如下的工作顺序编制: 第一步:输入魔方阵的阶数n(为奇数),并以此定义一个二维数组; 第二步:确定所谓“正中间位置”的列下标值,以及应填入的最大数字; 第三步:进行完成魔方阵的填写工作; 第四步:输出已完成的奇数阶魔方阵。 2.变量设置: N :表示魔方阵的阶数(为奇数); A :表示魔方阵的二维数组; I :数组A的行序号; J :数组A的列序号; R :填入的数字; S :对角线上各数字之和。 3.参考框图:如图3 – 5 所示。 4.框图说明:整个框图应分为三个功能部分: 第一个部分的功能是完成奇数N的输入,并定义二维数组,完成有关元素的数值计算,同时能实现当N不是奇数时自动结束。 图3 – 5 处理“奇数阶魔方阵”问题的框图 第二个部分的功能是完成魔方阵的填写工作。 填写并不是按数组A的下标顺序进行,而是通过对有关规律的判断确定下标I和J的不同值来进行。其中涉及到了判断“R是N的整数倍?”,这可以通过判断是否有等式R – INT ( R / N ) ( N = 0 成立来实现。 第三个部分的功能是完成输出魔方阵和计算相应魔方常数的工作。 计算相应魔方常数的工作是通过对魔方阵的对角线中各元素数值来实现,即在准备输出打印元素A ( I , I )时,通过累加方式S = S + A ( I , I )来实现。 5.参考算法 第01步:输入非负整数N,并定义

文档评论(0)

wulf + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档