九宫格的解题过程_第1页
九宫格的解题过程_第2页
九宫格的解题过程_第3页
九宫格的解题过程_第4页
九宫格的解题过程_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、九宫格的解题过程第 1 步首先计算每行数字之和。1 9 九个数字之和:1 + 2+ 3+ 4 + 5+ 6+ 7+ 8+ 9 = 45九宫格共有三行,并且每行的数字之和相等,因此4y3= 15,即每行数字之和为15。第 2 步计算中间格的数字。考虑第2行,第2歹1,和2条对角线的数字之和。它们的总和为 154 = 60。在它们的总和中,中间格子的数字出现了4 次,其它位置格子的数字都出现了而且仅出现了1 次。所以,它们白总和=(4X中间格子的数字)+ (其它8个数字)=(3 4问格子的数字)+ ( 1 9九个数字之和)因此,60 = 3对间格子白数字+ 45,中间格子白数字等于5第 3 步,奇

2、数不能出现在4 个角上的格子里。比如,如果数字9 出现在角上的格子里,那么为了保证9 所在行或所在列的数字和为15,必须需要 4 个数字,两两之和必须为6。 1, 2, 3, 4, 6, 7, 8 中,只有2 和 4 组成和为6 的数字对,找到第2 个和为 6 的数字对是不可能的。因此,数字9 不能出现在4 个角上的格子里。同样道理,1, 3, 7 也不能出现在4 个角上的格子里。第 4 步,2, 4, 6, 8 必须填在4 个角上的格子里,并且保证对角线数字和为15。第 5 步,将 1, 3, 7, 9 填入相应的格子里就完成了九宫格填数字任务,注意和为15 的 条件。完成了填九宫格的任务后

3、,我们进一步考虑,如果上面九宫格内所有数字都加数字1 会发生什么呢即可不可以用数字2,3,4,5,6,7,8,9,10填九宫格,得到每一行,每一列,每一对角线的三个数字之和都相等的新九宫格呢。显而易见,上面九宫格每行每列每对角线数字之和为18, 奇数 3, 5, 7, 9 处在 4 个角上的格子里,中间数 6 处在中间的格子里。从 1 9 和 2 10 各九个数字所填充的九宫格可以得出下列规律:1 )九个数字是由9 个相连的整数构成的。2)九个数字中正中间的数字填在九宫格的中间格子里。1 9 中的5, 2-10中的 6等。3)每行每列的数字和等于中间数字的三倍。比如15 = 53和18=63。

4、4)第2,4,6,8位的数字填充到4个角上的格子里。如2,3,4,5,6,7,8,9,10中的3,5, 7,9 和 1, 2,3,4,5,6,7, 8,9 中的 2, 4,6,8。问题1:已知9 个相连的整数填充的九宫格其每行数字和为45,求这九个数字。中间格数字为45?3 = 15, 15为正中间的数字,因此九个数字为11,12,13,14,15,16,17,18, 19。问题 2:已知 9 个相连的整数填充的九宫格其每行数字和为96,求九宫格4 个角上格子里的数。96?3 = 32,得到九个数字为 28, 29, 30, 31, 32, 33, 34, 35, 36。4个角上的数字为 29

5、, 31, 33, 35,其中35 和 29 为对角关系,31 和 33 为对角关系。问题3:成公差为d (d!=0)的等差数列是否也填九宫格比如公差为3的等差数列,1, 4,7,10,13,16,19,22,25,如何填九宫格呢5,15,25,35, 45, 55, 65, 75, 85 又怎样填古人说, “学贵有疑。小疑则小进,大疑则大进”。在学习中,我们要注意归纳和演绎能力的培养,总结一些规律,不但增加了学习的有效性和趣味性,对理解和掌握有关问题也很有益处。培育创新型人才既是学校和老师的责任,也是我们学生要刻意磨练的目标。本文通过详解九宫格问题,得到了一些有意义的结论和规律,而这些规律的

6、获得使我们对九宫格问题也有了更加深入的认识。幻方的求解三阶 幻方的解法第一种:杨辉法:九子斜排,上下对易,左右相更,四维挺出。12 43 5 76 892 9 47 5 36 1 8第二种:九宫图也是幻方的别称,三阶幻方就是著名的洛书,他的排列是:“戴九履一,左三右七,二四为肩,六八为足,五居中央(9 在上中,1 在下中。 3 在左中,7 在右中, 2 在左上, 4 在右上, 6在左下, 8 在右下)第三种:罗伯法:最小的数据上行中央,依次向右上方斜填,上出框往下写,右出框往左填,排重便在下格填,右上排重一个样8 1 63 5 74 9 2四阶幻方的解法1 、先把这16 个数字按顺序从小到到排

7、成一个4 乘 4 的方阵2、内外四个角对角上互补的数相易,(方阵分为两个正方形,外大内小,然后把大正方形的四个对角上的数字对换,小正方形四个对角上的数字对换)即( 1 , 16)(4, 13)互换( 6, 11)(7, 10)互换16 2 3 135 11 10 89 7 6 124 14 15 1另: 对于 n=4k 阶幻方,我们先把数字按顺序填写。写好后,按4*4 把它划分成k*k 个方阵。因为n 是4 的倍数,一定能用4*4 的小方阵分割。然后把每个小方阵的对角线,象制作4 阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。五阶 幻方的解法:罗伯法:最小的数据上行中央,依次向右

8、上方斜填,上出框往下写,右出框往左填,排重便在下格填,右上排重一个样。17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9(在最上一行的中间填1,接着在1 的右上方填2,由于 1 在最上一行,所以 1 的右上方应该是第五行的第四个,接下来在2 的右上方填3,3 的右上方应该是第三行第一个,所以在此填4,在 4 的右上方填5,在 5 的下方填6,接着按前面五个数的填法依次填7,8,9,10;在 10的下方填11,然后按上面的方法填,每次填五个数,直到完成.无论从上到下还是从左到右都是五排,所以每排的五个数之和为(1+2+3+4

9、+ +25) + 5=65,因此,你可以验算一下是否每个和都是65.此法适合于一切奇阶幻方.)数独游戏数独,据说最先是在瑞典,后来到美国,然后到日本被发扬光大。这个游戏,进入了今年上海交大的自主招生试 题 最后一道大题就是数独题。5438269128391654916547832458239167639471285721658349362795418175864923894123756上面的图片中,红色是在玩游戏前给出的数字,蓝色的数字就是后填的。游戏的规则很简单,每一行填入19九个数字,每一列也填入 19九个数字,但同时要满足每一个九宫格中也包含19九个数字,也就是说每一个九宫格中也填入19

10、九个数字。49O 一35816此图的特别之处就是横行纵列加上两条对角线上的三个数字之和均为15。类似于这样的问题,也称之为幻方,像上面的九宫格,可称为 3阶幻方(因每行,每列,两条对角线上数字个数是3),还有4阶、5阶、6阶等。此外还可分为奇阶幻方和偶阶幻方。九宫格就属于奇阶幻方。 下面是个五阶幻方。1118259910121921346132022235i141617241815幻方的填写是有规律的,我想通过上面两个两个幻方可以找到一些规律。偶阶幻方的填写规律比奇阶幻方要稍微复杂一一小声点说,我还不是太明白,还在继续学习中。练习1:.完成一道数独游戏题吧,说不定下回哪个考试也会有这样的题呢!

11、46828139198357281257465,你能说出7n 个数字的和练习 2: 3 阶幻方三个数的和是15, 5 阶幻方五个数的和是阶幻方中七个数的和是多少吗进一步,你能说出奇阶幻方中是多少吗练习 3: 完成一个7 阶幻方。EnnnEDHDSes回口田EE0HH比如说三阶幻方,先向外翻折扩展,然后按上图左二的规律,按顺序写上1-9的数字,接下来幻方之外的数,按左往右仍,右往左仍,上往下扔,下往上扔的规律填进幻方,将其余的删去,就得到一个横竖斜都等于15的幻方了!下图是五阶幻方的解法,方法相同,只是规模大了点。回口回口画口回EJEIEl回口画口国目口叵口叵口画囹国口回叵回叵回国回国H目回区囹

12、因四S回口回回国S巨叵S画国画回国画回口回E囹回口回叵叵回山口800000回困回口回回七阶幻方如下:(唉,上面那种做图太累,后面的图就来自于互联网了。)7614364443只要按照这个方法,无论多少阶,只要是个奇数,都可以画得出来,至少一个!你可以奸诈一点,比 如说画好菱形后,1的起始位置是可以换的,写的方向也是可以换的,但是最后出来的幻方本质上是 样的。对于偶数呢,最小是4阶的,四阶的幻方老师也讲了一个解法,就是大对角线换,小对角线也换。步 骤如下:先按顺序写出1-16的数在4阶幻方里面,如下:12345678910H1213141516接下来所谓的大对角线换,小对角线换就是 1和16换,4

13、和13换,6和11, 7和10,换完就出来了:1151441267981011513*216横竖斜都是34。然后问题就来了,有没有办法可以解出任意高偶数阶的幻方的方法呢我曾经很傻很天真的试图把4阶这种换对角线的方法推广到6阶,但是怎么弄都未果,估计这种方法 对于4阶只是种巧合吧。后来大学玩matlab后,发现matlab里面函数magic可以输出任意阶的幻方,哦,soga,原来真的有的 啊。后来我就对着matlab里面magic的源文件写出了这个C+K本,只是为了巩固自己对四阶的理解罢了。然后下面整理一下一般的偶数阶幻方的解法,解法来源于互联网。首先一般的偶数阶解法都是把偶数分成两种,4,8,

14、12,16这种4m的双偶数和6,10,14这种4m+2的单偶数,一般的解法都是分开来两类的,包括 matlab里面的magic函数,不过查了一下也有很多大牛研究 出了统一解法,更有大神把奇偶阶全部同意了,膜拜 ingo 0 o双偶数解法:偶数阶下面先讲简单的双偶数解法,看了很多解法,但是最后发现了一个通解,网上看 到的大部分解法都是这个通解的特例。首先呢,如下图所示,先把n阶幻方分成4个小块,对于左上角那个你任意的把一半放个填成灰色,但是有一个约束条件,就是左上角这个小块中每一行每一列都要只有n/4个灰色的。然后呢,右上的那个小块的填色方案就是左上填色方案的左右镜像对称,左下的就是左上天色方案

15、的上下镜像对称, 自然,右下就是左上的中心对称了。如下图所示:一一一一一一 然后呢,你把1-n2a么多个数按顺序填。白色的格子里去,灰色的部分“snEV面左图所/现在我们来讨论一下这种方法,首先看我们原本的四阶幻方的解法,有没有发现其实和这种方法是 不东西。然后再看看双偶数阶的另一种解法,比如说下面这个 8阶幻方:16263455958856101153521415494818194544222341253938282935343233313036372726402442432120464117165051131254559577660612364这里的解法呢,就是把整个幻方分成2X2个4X4

16、的小块,按顺序填好1-64个数,然后每个4X4小块的对角线上的数不变,其余的数做中心对称。再看看下面这个:l14311245139136e9135134212阶,分成3X价4X4的小块,和之前一样,1321415129】况1E19124222312112026271171163031113112343510937107106404110310244459998招49踊94膛53919056678786闻0462638180677176TC717372747569朋787965&48283618659588889555492935150踊97474610010143421041053938108

17、361101113332114115次2811811925.24122123212012612717161301311313311101361377614014132144按顺序填好数,然后每个 4X4小块的对角线上的数/、艾,其余的数做中心对称。虽然和我坡开始的那种分法不一样,但是你仔细一想,其实是完全一样的,只是他的填色方案是固定 的一种模式而已。还有一种说法是每个小块对角线上的数换成互补的那个数,其实本质还是一样嘛。卜面是一个双偶数的matlab程序,找填色方案用时是国际象棋棋盘那种黑白相间。function a = hf_4m(n)flag = zeros(n/2,n/2);flag(

18、1:2:n/2,12n/2) = 1;flag(2:2:n/2,2:2:n/2) = 1;flag = flag fliplr(flag);flipud(flag) flipud(fliplr(flag);a = reshape(1:nA2,n,n);a = a .* flag;a = reshape(a,1,nA2);blank_idx = find(a=0);number_left = (1:nA2) .* (a=0);number_left = fliplr(setdiff(number_left,0);a(blank_idx) = number_left;a = reshape(a,n

19、,n);单偶数解法:下面来看看单偶数的解法,这种现在主要有两种方法,分区法和易位法。其中呢,分区 法也有两种。先说分区法,首先呢就是把方阵划分成下面A,B,C,D四块,因为是单偶数,所以每一块必然是个奇数幻方。然后把1n24这些数组成的奇数阶幻方算出来,填进A里面,然后接下来的n24的幻方填进D里面,(其实有个很简单的方法,就是把 A里面的每个数 加上n24就可以了),再把D里面的加上n24放到B里面,最后那些放到C里面。下面是10阶幻方 的一个例子:先假设阶数是4k+2,那么k=(n-2)/4,然后下面是第一种方法:但是细细读就会明白了:从A小块的中间行中问格开始(上图中的13),向右找k个

20、数(包括中间行中问格那个),和 C小块 的相应位置的数换位。A小块的其他行(也就是除了最中间那一行)从最左开始数出 k个数,和C中 相应位置的数换。B小块中间列开始,向左数K-1列出来(当然也包括B小块中间那一列),然后这些列和 D小块中相应未知的数换位。(6阶k-1=0,就不用了)3219911P15网74 26 5;8 6598 80 |714,167355 32 84 66h |6 |88 |95|22%56 38 710 725 |87 |19 |2136062同卜1 536193|25 |2F6768 50 5:2 59174176 -83904249 51 33 |40|23 6

21、|82 |898|30 57 N9 4179 iBl 113 |20972931 63 4.5 4710 12 94 96783?37 69 |4IBpgl11|18|100 |77:84工6 IK而27 34然后就完成了。14阶幻方的换位方式如下:16117615937204528102127HH1181431261821国1S31944273133啕二142125101157189165432623410814012410013241174&17214BISOg13911599131107163195171732840114146E130106138LM170153311439151451

22、21Fd11213711316915217713382146120103S1311914442912184167192175537811013569947735il361661911741508460134117937652104218190173149181599111614175&1831816419625z31569066147123508258Ifi241541791551876697122105816789472361781611B6162郭72104129638864225加1601K51681937154128111877095这种方法的matlab函数如下:function a

23、 = hf_4m_2(n)a = zeros(n,n);a(1:n/2,1:n/2) = magic(n/2);a(n/2+1:n,n/2+1:n) = a(1:n/2,1:n/2) + nA2/4;a(1:n/2,n/2+1:n) = a(1:n/2,1:n/2) + nA2/4*2;a(n/2+1:n,1:n/2) = a(1:n/2,1:n/2) + nA2/4*3;m = (n/2-1)/2;temp = a(n/2+1)/2,(n/2+1)/2:(n/2+1)/2+m-1);a(n/2+1)/2,(n/2+1)/2:(n/2+1)/2+m-1) = a(n/2+1)/2+n/2,(n

24、/2+1)/2:(n/2+1)/2+m-1);a(n/2+1)/2+n/2,(n/2+1)/2:(n/2+1)/2+m-1) = temp;temp = a(setdiff(1:n/2,(n/2+1)/2),1:1+m-1);a(setdiff(1:n/2,(n/2+1)/2),1:1+m-1) = a(setdiff(1:n/2,(n/2+1)/2)+n/2,1:1+m-1);a(setdiff(1:n/2,(n/2+1)/2)+n/2,1:1+m-1) = temp;if(m1)temp = a(1:n/2,n*3/4+1/2-m+2:n*3/4+1/2);a(1:n/2,n*3/4+1/

25、2-m+2:n*3/4+1/2) = a(1+n/2:n,n*3/4+1/2-m+2:n*3/4+1/2);a(1+n/2:n,n*3/4+1/2-m+2:n*3/4+1/2) = temp;end然后还有一种换位方法,A小块中间那一行第2列开始往右数k个数,和C小块中相应位置的数换位, A小块中其余行都从最左开始向右数 k歹I,这些数也和C小块的做交换。B小块中,从最右开始向左数 k-1个列,与D中相应位置的数换位,结果也是一样的。这种方法matlab代码如下:function a = hf_4m_2(n)a = zeros(n,n);a(1:n/2,1:n/2) = magic(n/2);

26、a(n/2+1:n,n/2+1:n) = a(1:n/2,1:n/2) + nA2/4;a(1:n/2,n/2+1:n) = a(1:n/2,1:n/2) + nA2/4*2;a(n/2+1:n,1:n/2) = a(1:n/2,1:n/2) + nA2/4*3;m = (n/2-1)/2;temp = a(n/2+1)/2,2:2+m-1);a(n/2+1)/2,2:2+m-1) = a(n/2+1)/2+n/2,2:2+m-1);a(n/2+1)/2+n/2,2:2+m-1) = temp;temp = a(setdiff(1:n/2,(n/2+1)/2),1:1+m-1);a(setdi

27、ff(1:n/2,(n/2+1)/2),1:1+m-1) = a(setdiff(1:n/2,(n/2+1)/2)+n/2,1:1+m-1);a(setdiff(1:n/2,(n/2+1)/2)+n/2,1:1+m-1) = temp;if(m1)temp = a(1:n/2,n:-1:n-m+2);a(1:n/2,n:-1:n-m+2) = a(1:n/2)+n/2,n:-1:n-m+2);a(1:n/2)+n/2,n:-1:n-m+2) = temp;end这两中方法为什么可行我还没仔细研究,但是刚刚编程发现一个很神奇的现象,就是第一种方法的BD小块交换规则配上第二种方法的 AC小块交换规

28、则,也是可以的。冏。对于单偶数的幻方,还有一种杨辉创造的二阶方阵易位法(我发现杨辉老兄很喜欢玩数阵)。对于n = 4m+2阶幻方,先用奇数阶的方法做出一个2m+1阶幻方来,然后把1n2sB么多个数4个一组,分成(2m+1)2t组,1,2,3,45,6,7,89,10,11,12分别称为第 1 组,第 2 组,第 3 组第(2m+1)2fi。接下来那每一组四个数按下面的方法放入2X 2的方阵中:| 2 | 3p F | 10 | 111 i- 1 ri-9 、 一 然后把之前那个2m+1阶幻方,每个位置上的数如果是i,那么就换成第i组2X2方阵,这样就有了一个nxn的方阵了,但是这个方阵还不是幻

29、方,需要再修正。我们继续讨论刚才那一个2m+1阶幻方,假设我们n=14,那么2m+1 = 7,对于下图中这个7阶的方阵, 我们把倒数第二行染绿,然后从中间那一行开始向下知道倒数第三行为止全部染蓝,如果中间那一行 就是倒数第二行,那么不染蓝。口口口口 口口口口on接下来在把最左和最右两列的染色向下拉一格。如下图:口 口口口口口 口 口口口 no 口 口口口 口 口口口我们知道对应于刚刚做出来的那个 nXn的方阵,每2X2方阵,四个数对应于上图的一个格。我们现在做如下操作,如果是绿色的格子,那么2X2方阵的最下面两个数交换,如果是蓝色格子的话,2X2方阵不仅下面两个数交换,而且上面两个数也要交换。

30、下面举个例子:对于14阶幻方,先生成一个7阶幻方30394S1,&.19233S47918127_29466s,i7运37I- 口141625_w36451515243342_44口2123324?43二122231刈4g21120-然后把相应位置填上相应的2阶方阵:US119IM1就19019123S3电747511011112011715615319 2_18941_40377673112109向Ibl1861薪3627 3367Q立一1Q6W?114115152149188185282536357209108105IIS1131821SG222$3051665710210313B1391

31、46147184181242132293S5510410114013714314518195455S2S39S英13413S142143ITS17020175653646110C9713613314414118017750Else5自9405ISCLSI.1361671?4L7E1415524日60579S931321291S8165ITS173161332B390911261271621631701711011464761关831281251641611721691254845S66712912316415g1541956742437S7938e&1M1691571S6WOg4441SO77

32、填好色: . 一 118 11S120 117工四155156 153130 191192 1892413339403774757673110 111112 109150 151152 149130 is?188 18626方282534 35363370 7172 69106 107108 105114 115116 1131S2 133184 1812223M 21503132 2g65 S7雨 55102 109104 10119S 13140 1J714S 147143 1451S 19加 17兆雨 53S2 6364 。110 97134 135133 13S179 179ISO 1

33、77505152495S 59005794 59S S3130 131132 129165 1671SS 155174 175175 1731415L5 1332 S3学1 81909192 89126 127 162 163164 L611T0 171172 1 电101 1129始 4T福 458687圈 85122 123124 121158 159160 157194 155IM 1P367SS42 4344 417879&077上下都换,就得到结果啦钵巴忙于制两1奴伙1”,监巴烟118 110120 117154 155156 1531PQ 191192 189234188 阕403

34、774 757673110 111112 109150 151152 1491S6 187163 13520 2?282534353S 0370 7172 S910G 10?103 105114 11511G H3182 1831S4 1S1222324 21303132 29666768 6E102 1031M 101138 13914。 137146 14714855453 E563 62S1 6499 S897100135 134133 135143 142141 144178 179190 1775150如 5259535760加 3493 gg131 130

35、129 1321Q7 166165 L68175 171173 1761514131683 8231 84照 51SS 92120 137125 128162 163161 1641的 171169 1721Q 1191247 4e45 48S6 87S5 S3122 123124 121工58 159160 157194 1S5196 193676542 4344 4178 T97780杨辉易位法代码如下:function a = hf_4m_2_yiwei(n) h = magic(n/2);a = zeros(n,n);for i = 1 : n/2for j = 1 : n/2a(i*

36、2-1:i*2,j*2-1:j*2) = 2 3;4 1 + (h(i,j)-1)*4;endendflag = zeros(n/2,n/2);flag(n/2-1,:) = 1; %F 面两个互换if(n 6)flag(n/2+1)/2:n/2-2,:) = 2; %上面下面都要换endflag(2:n/2,1 n/2) = flag(1:n/2-1,1 n/2);for i = 1 : n/2for j = 1 : n/2if(flag(i,j) 0)temp = a(i*2,j*2-1);a(i*2,j*2-1) = a(i*2,j*2);a(i*2,j*2) = temp;endif(

37、flag(i,j) = 2)temp = a(i*2-1,j*2-1);a(i*2-1,j*2-1) = a(i*2-1,j*2);a(i*2-1,j*2) = temp;endendend哟西,好了,终于写的差不多了。自个研究了一下,收获颇多。不过幻方可不仅仅是构造那么简单, 以前看的一本书里面有各种变态的幻方,什么切尾幻方什么的。还有很多数学上的东西,下面提问, 请证明:偶数阶幻方行列式值一定是0!下面附上一个很多年前改写 matlab的magic函数的C+弋码:#include #includeclassmagicpublic:int *m;magic();magic(int n);magic(magic &c);void show();int size;magic:magic(magic &c)int n=;size=n;m=newint*n;for (int l=0;ln;l+)ml=newintn;for (int k=0;kn;k+)mlk=lk;magic二magicQnt n)size=n;m=newint*n;for(int l=0;ln;l+)ml=newintn;for(int k=0;kn;k+)mlk=0;void magic二show()for(int l=0;lsiz

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论