魔方阵解答

合集下载

魔方阵算法分析

魔方阵算法分析

魔方阵算法2008-11-22 17:12幻方问题分为奇幻方和偶幻方。

奇幻方和偶幻方方阵的布阵规律不同,而偶幻方又分为是4的倍数(如4,8,12,16,20等)和不是4的倍数(如6,10,14,18等)两种。

现在就幻方的三种情形的布阵规律分别加以介绍。

A方案1、奇幻方N=2*M+1(M=1,2,3,……)的布阵规律a、把1放在N*N方阵中的第一行中间一列,即放在位置为(1,(N+1)/2);b、后一个数存放的行数比前一个数存放的行数减1,若这个行数为0,则取行数为N;c、后一个数存放的列数比前一个数存放的列数加1,若这个列数为N+1,则取列数为1;d、如果前一个数是N的倍数,则后一个数存放的列数不变,而行数加1。

B方案⑴将1放在第一行中间一列;⑵从2开始直到n×n止各数依次按下列规则存放;每一个数存放的行比前一个数的行数减1,列数加1(例如上面的三阶魔方阵,5在4的上一行后一列);⑶如果上一个数的行数为1,则下一个数的行数为n(指最下一行);例如1在第一行,则2应放在最下一行,列数同样加1;⑷当上一个数的列数为n时,下一个数的列数应为1,行数减去1。

例如2在第3行最后一列,则3应放在第二行第一列;⑸如果按上面规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。

例如按上面的规定,4应该放在第1行第2列,但该位置已经被占据,所以4就放在3的下面;2、①偶幻方N=4*(M=1,2,3,……)的布阵规律先将1至N*N由小到大的顺序,从第一行开是依序填入N*N的方阵中,然后将N*N的方阵以4行4列划分为若干个4*4的小方阵,再将所有4*4小方阵的两个对角线上的数字划掉,之后将所有被划掉的数字重新由大到小的进行排列,然后再将这些数字按排列顺序由N*N方阵的第一行开始,放入被划掉的格子中去。

则此时的偶幻方也就布好阵。

2、②偶幻方N=4*(M=1,2,3,……)的布阵规律本法先將數字順序填入方陣之後,再施以兩階段的翻轉,一次縱向、一次橫向,故名雙向翻轉法。

魔方阵

魔方阵

问题3.1、n –魔方阵一、提出问题所谓“n – 魔方阵”是指由1至n 这n 个不同整数构成的魔方阵,其魔方常数为n ( n + 1 ) / 2。

例如,5 – 魔方阵和7 – 魔方阵如图3 – 1所示。

易知,这两个魔方阵的魔方常数分别为15和28。

3215415432432152154354321 ,4321765176543254321762176543654321732176547654321 图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.填入其他行的数字,并保证数字原有的顺序不改变同时每一行的第一个数字正好是其上一行正中间的数字要解决这个问题,需借助一个有n + 1单元的一维数组,并对该数组进行若干次“循环左移”处理。

所谓做一次“循环左移”,即指在一维数组中,将第1个数填入第n + 1个单元,第2个数填入第1个单元,……,第n个数填入第n– 1 个单元,最后再将第n + 1个单元中的数填入第n个单元。

小学数学幻方题练习题

小学数学幻方题练习题

小学数学幻方题练习题幻方是一种神奇的数学图形,它的每个方格都填入不同的数,而且每行、每列及对角线的和都相等。

在小学数学中,学生们常常通过练习解幻方题来提高逻辑思维和数学计算能力。

下面将给出一些小学数学幻方题练习题,请同学们认真思考并试着解答。

第一题:在3×3的格子中填入1~9九个数字,使每行、每列及对角线上的数字和都相等。

解答:根据题目要求,我们需要找到一组数字使得每行、每列及对角线的和都相等。

观察发现,这是一个魔方阵的问题,我们可以尝试使用排列组合的方法来解决。

首先,我们知道每行、每列及对角线的和都是15(1+2+3+4+5+6+7+8+9=45,45÷3=15)。

所以我们可以从1开始,依次填入格子,直到填满为止。

在填的过程中,我们要保持每行、每列及对角线的和都等于15。

我们先填写第一行的数字,可以从1开始,填入递增的数字。

接下来,我们填写第二行的数字,可以从第一行已经填好的数字中选择未被使用的数字,并且要保持第二行的和等于15。

同样的方法,我们填写第三行的数字。

最终,我们得到以下的幻方:2 7 69 5 14 3 8经过计算,我们可以发现每行、每列及对角线的和都等于15。

第二题:在4×4的格子中填入1~16十六个数字,使每行、每列及对角线的和都相等。

解答:与第一题类似,我们需要找到一组数字使得每行、每列及对角线的和都相等。

我们可以使用相同的方法:先确定每行、每列及对角线的和,然后逐渐填入数字。

根据题目要求,每行、每列及对角线的和都是34(1+2+3+...+16=136,136÷4=34)。

我们可以从1开始,逐个填入格子。

同样,需要保证每行、每列及对角线的和等于34。

填写顺序可以按照行的顺序进行,也可以按照其他规则进行。

经过计算和尝试,我们得到以下的幻方:16 3 2 135 10 11 89 6 7 124 15 14 1最后,我们可以验证每行、每列及对角线的和都等于34。

趣味数学题目

趣味数学题目

游戏学数学:五个王后的游戏五个王后的游戏这是两人玩的游戏。

在棋盘上随意摆几个王后,例如图中有5个王后。

两人轮流移动王后。

移动的方式如下:(1)取走王后。

(2)以下列方式移动王后,步数不限。

①向下移动;②向左移动;③沿对角线向左下方移动。

如果移动后,两个王后位于同一方格,则两者都会被取走。

取走最后一个王后的人赢。

解答与分析这个游戏在有限的移动步数之后一定会结束,因为王后不能倒退,而且每次移动之后活动的空间就更小。

这不是个容易分析的游戏。

这个游戏也可以改成最后取走王后的人输。

一位农夫和他的朋友合买了一桶8加仑装的苹果酒(1加仑=4.5461升)。

他们想平分这些苹果酒,但却只有一个5加仑和一个3加仑的容器。

他们该如何平分?解答与分析将3个容器依其容量简记为8、5、3。

由8倒满5。

由5倒满3,5中还留有2加仑酒。

将3倒入8。

由5倒2加仑酒入3。

由8倒满5。

由5倒入3,直到3满,此时5中还留有4加仑酒。

将3倒入8,这样8中也有4加仑酒。

一座现代化的大都市建有环形的道路网和连接道路的系统,如图所示。

在每一条道路的交叉口,汽油公司都设有一个加油站。

运送汽油的证明请证明油罐车的司机在离开贮油库之后,可以沿路到每一个加油站运送汽油,而不重复经过任何一个加油站再回到贮油库。

一只青蛙在找水喝时不慎落入30尺深的井里。

它为了爬出水井,每天白天奋力往上爬3尺,但是到了晚上却会向下滑落2尺。

几天之后这只青蛙才能爬出这口井?解答青蛙需要28天才能爬出井口。

将8枚硬币排成如图所示的正方形,每边3枚硬币。

试移动4枚硬币,使它变成一个每边有4枚硬币的正方形。

关于硬币的魔术解答与分析把每一边中间的硬币依序放在位于角落的硬币上,这样就可以得到一个正方形,在它的4个顶点上各有两枚叠在一起的硬币,因此每边有4枚硬币。

知道答案就觉得很简单!我们通常都可以从二维的图画中看出所要表现的三维物体,识图与绘图的训练,可以培养我们的空间观念。

然而,就像这里所示的一些图画,二维的图画也可以在视觉上创造出不可能的事物。

11阶立方体魔方阵的制作及原理(精)

11阶立方体魔方阵的制作及原理(精)

11 階立方體魔方陣的製作及原理摘要:在這篇報告中,我們將0~1330中每一個正整數,先將每一個數都連續除以11兩次,再把每一個數的餘數以及商,分別取出來,再將每一個數都表示成a×112+b×11+c,其中a、b、c都是0~10的正整數,再將這些數轉化成座標形式(a、b、c),再利用等差數列的觀念,從原點分別向X軸、Y軸、Z軸增加一定的座標量,希望11 階立方體陣中,每一個平面上它們的橫線、直線、對角線,及立方體的四條對角線,他們的x座標、y座標及z座標0~10均只出現一次,如此一來,將這些座標換算回所對的數,會出現每一個面的直線、橫線、對角線及方體中四條對角線上面的數字總和相等的結果。

研究動機:在上學期學習「數量關係」,曾經提到一種以相同大小增加或減少的數列,老師提到可以用這種觀念來解釋平面上的魔方陣.在「有趣的魔方陣」這本書中,我們又看到了有關於魔方的各種製作方法及各式各樣的變形魔方,其中所介紹的立體方陣引起了我們的興趣,但是我們發現書本所記的立體方陣都只提到2階,3階或者12面體的立體方陣(見圖)的製作及結果,但是這本書的介紹僅限於此,並沒有再提到任何立體方陣的敘述,所以我們就想到了一個問題:”能不能用類似的手法創造一個與正方形魔方類似的立體方陣?”,也就是在它的格子中填入一些數字,使它裡面的每一面橫、直、對角線的總和均相等且立方體內的四條對角線總和也與前述相等,基於這項原因經過多次的實驗及推理觀察,我們將對11階的立方體進行觀察研究。

研究目的:發展一個製作11階立方體魔方的方法,使它能滿足研究動機中的結論,並推測是否還有其他立體方陣存在。

研究方法:根據85年度嘉義中小學科展作品「奇數階的製作及原理」我們以11階的平面魔方陣為例,重新觀察它的製作過程,現在我們的問題是:”將0-120的每一個正整數填入(如圖)11×11的正方形空格中,使它的直、橫、及對角線總和均相等”,面對這個問題,我們先將0-120的每個數都除以11,找出商及餘數,並表示成座標得到詳細結果如下:0÷11=0 ……0(0,0)1÷11=0……1(0,1)2÷11=0……2(0,2)3÷11=0 ……3(0,3)4÷11=0……4(0,4)5÷11=0……5(0,5)6÷11=0 ……6(0,6)7÷11=0……7(0,7)8÷11=0……8(0,8)9÷11=0 ……9(0,9)10÷11=0……10(0,10)11÷11=1……0(1,0)12÷11=1 ……1(1,1)13÷11=1……2(1,2)14÷11=1……3(1,3)15÷11=1 ……4(1,4)16÷11=1……5(1,5)17÷11=1……6(1,6)18÷11=1 ……7(1,7)19÷11=1……8(1,8)20÷11=1……9(1,9)21÷11=1 ……10(1,10)22÷11=2……0(2,0)23÷11=2……1(2,1)24÷11=2 ……2(2,2)25÷11=2……3(2,3)26÷11=2……4(2,4)27÷11=2 ……5(2,5)28÷11=2……6(2,6)29÷11=2……7(2,7)30÷11=2 ……8(2,8)31÷11=2……9(2,9)32÷11=2……10(2,10)33÷11=3 ……0(3,0)34÷11=3……1(3,1)35÷11=3……2(3,2)36÷11=3 ……3(3,3)37÷11=3……4(3,4)38÷11=3……5(3,5)39÷11=3 ……6(3,6)40÷11=3……7(3,7)41÷11=3……3(3,8)42÷11=3 ……9(3,9)43÷11=3……10(3,10)44÷11=4……0(4,0)45÷11=4 ……1(4,1)46÷11=4……2(4,2)47÷11=4……3(4,3)48÷11=4 ……4(4,4)49÷11=4……5(4,5)50÷11=4……6(4,6)51÷11=4 ……7(4,7)52÷11=4……8(4,8)53÷11=4……9(4,9)54÷11=4 ……10(4,10)55÷11=5……0(5,0)56÷11=5……1(5,1)57÷11=5 ……2(5,2)58÷11=5……3(5,3)59÷11=5……4(5,4)60÷11=5 ……5(5,5)61÷11=5……6(5,6)62÷11=5……7(5,7)63÷11=5 ……8(5,8)64÷11=5……9(5,9)65÷11=5……10(5,10)66÷11=6 ……0(6,0)67÷11=6……1(6,1)68÷11=6……2(6,2)69÷11=6 ……3(6,3)70÷11=6……4(6,4)71÷11=6……5(6,5)72÷11=6 ……6(6,6)73÷11=6……7(6,7)74÷11=6……8(6,8)75÷11=6 ……9(6,9)76÷11=6……10(6,10)77÷11=7……0(7,0)78÷11=7 ……1(7,1)79÷11=7……2(7,2)80÷11=7……3(7,3)81÷11=7 ……4(7,4)82÷11=7……5(7,5)83÷11=7……6(7,6)84÷11=7 ……7(7,7)85÷11=7……8(7,8)86÷11=7……9(7,9)87÷11=7 ……10(7,10)88÷11=8……0(8,0)89÷11=8……1(8,1)90÷11=8 ……2(8,2)91÷11=8……3(8,3)92÷11=8……4(8,4)93÷11=8 ……5(8,5)94÷11=8……6(8,6)95÷11=8……7(8,7)96÷11=8 ……8(8,8)97÷11=8……9(8,9)98÷11=8……10(8,10)99÷11=9 ……0(9,0)100÷11=9……1(9,1)101÷11=9……2(9,2)102÷11=9 ……3(9,3)103÷11=9……4(9,4)104÷11=9……5(9,5)105÷11=9 ……6(9,6)106÷11=9……7(9,7)107÷11=9……8(9,8)108÷11=9 ……9(9,9)109÷11=9……10(9,10)110÷11=10……0(10,0)111÷11=10 ……1(10,1)112÷11=10……2(10,2)113÷11=10……3(10,3)114÷11=10 ……4(10,4)115÷11=10……5(10,5)116÷11=10……6(10,6)117÷11=10 ……7(10,7)118÷11=10……8(10,8)119÷11=10……9(10,9)120÷11=10 ……10(10,10)現在我們想將這些數對填入空格中,而且我們希望能讓我們的橫、直、對角線的x座標及y座標總和均相等,我們所利用的方法如下:從左下角開始填入(0,0)分別向下每跳一格加上(1,1) ,(2,3)我們可先得到如下圖結果:因為(6,9)再加(2,3)得到(8,12),我們將12除以11取其餘數一可得座標(8,1)再將其向填入空格中,其餘的座標填法均如上所述,所以我們將所有座標填入後所得到下圖結果(見圖3)觀察上述結果,因為橫、直、對角線他們的x座標及y座標均從0-10出現一次,所以我們可以推測將座標還原成原先代表的數字能夠得到我們要的結論,還原的結果如下:上述方法的優點是:1.我們將原本相當多且複雜的數轉換成座標後,每一個座標所要考慮的對象都變少了(只要考慮0~10)2.因為從(0,0)向x軸、向y軸增加一定的座標。

魔方阵算法及C语言实现

魔方阵算法及C语言实现

魔⽅阵算法及C语⾔实现1 魔⽅阵概念是指由1,2,3……n2填充的,每⼀⾏、每⼀列、对⾓线之和均相等的⽅阵,阶数n = 3,4,5…。

魔⽅阵也称为幻⽅阵。

例如三阶魔⽅阵为:魔⽅阵有什么的规律呢?魔⽅阵分为奇幻⽅和偶幻⽅。

⽽偶幻⽅⼜分为是4的倍数(如4,8,12……)和不是4的倍数(如6,10,14……)两种。

下⾯分别进⾏介绍。

2 奇魔⽅的算法2.1 奇魔⽅的规律与算法奇魔⽅(阶数n = 2 * m + 1,m =1,2,3……)规律如下:1. 数字1位于⽅阵中的第⼀⾏中间⼀列;2. 数字a(1 < a ≤ n2)所在⾏数⽐a-1⾏数少1,若a-1的⾏数为1,则a的⾏数为n;3. 数字a(1 < a ≤ n2)所在列数⽐a-1列数⼤1,若a-1的列数为n,则a的列数为1;4. 如果a-1是n的倍数,则a(1 < a ≤ n2)的⾏数⽐a-1⾏数⼤1,列数与a-1相同。

2.2 奇魔⽅算法的C语⾔实现1 #include <stdio.h>2// Author: /3// N为魔⽅阶数4#define N 1156int main()7 {8int a[N][N];9int i;10int col,row;1112 col = (N-1)/2;13 row = 0;1415 a[row][col] = 1;1617for(i = 2; i <= N*N; i++)18 {19if((i-1)%N == 0 )20 {21 row++;22 }23else24 {25// if row = 0, then row = N-1, or row = row - 126 row--;27 row = (row+N)%N;2829// if col = N, then col = 0, or col = col + 130 col ++;31 col %= N;32 }33 a[row][col] = i;34 }35for(row = 0;row<N;row++)36 {37for(col = 0;col < N; col ++)38 {39 printf("%6d",a[row][col]);40 }41 printf("\n");42 }43return0;44 }3 偶魔⽅的算法偶魔⽅的情况⽐较特殊,分为阶数n = 4 * m(m =1,2,3……)的情况和阶数n = 4 * m + 2(m = 1,2,3……)情况两种。

魔方阵问题doc

魔方阵问题doc

魔方阵问题:把1到n 2(n 为奇数)个自然数按方阵排列,使得方阵的每行、每列以及沿对角线的几个数之和都等于方阵常量,这个常量是:(21)n(n 2+1)。

例如,1至9可以排成如图所示的方阵,方阵常量是(21)*3*(32+1)=15。

提示:各数在魔方阵中的位置可按下述方法确定:通常1总是在第1行的中间;对于其他自然数来说,目前数的右上方是下一个数的位置,若右上方已经赋值,则下一个数的位置在其下方;如果目前数在第1行,但不在最右侧,则下一个数在最后一行,列数右移一列;如果目前数在第1行的最右侧,则下一个数在目前数的下侧;如果目前数在其他行的最右侧,则下一个自然数在上一行的最左侧。

用二维数组存放魔方阵。

输出魔方阵

输出魔方阵

4.输出"魔方阵".所谓魔方阵,是指这样的方阵,它的每一行、每一列和对角线之和均相等。

要求:从键盘输入一个n(n>2),输出由1~n2的自然数构成的魔方阵;如n=3时的魔方阵为:8 1 63 5 74 9 2.for(i=0;i<n;i++)a[j][i]=st++; 从上至下填充方阵,值递增for(j=0;j<n;j++)for(i=0;i<n;i++)if(j%4==i%4||(j%4+i%4)==3) .换成其补数for(i=0;i<n;i++){小方阵按奇数阶算法依次填入A(1…[2k+1]2)、B([2k+1]2+1…2[2k+1]2)、C(…)、D(…4[2k+1]2);A与D换:A中间格始向右取k格;A最左边的k列(除中行);C与B互换:从C的中间列开始向左数k-1列。

.for(i=0;i<n;i++)a[j][i]=st++; 从上至下填充方阵,值递增for(j=0;j<n;j++)for(i=0;i<n;i++)if(j%4==i%4||(j%4+i%4)==3) .换成其补数}void MagicSev(int a[M][M],int st,int n) .t=a[k][j];a[k][j]=a[k+m][j]; 与D对应位置交换a[k+m][j]=t;}for(i=0;i<m;i++){ .if(i!=k) 除中间行外for(j=0;j<k;j++){ 取最左边的k列t=a[i][j];a[i][j]=a[i+m][j]; 与D应位置交换a[i+m][j]=t;}}for(i=0;i<m;i++) .与B应位置交换a[i+m][j]=t;}}void OutMagic(int a[M][M],int n) //输出n阶魔方阵!{int i,j;for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++)printf("%4d",a[i][j]);}}void SumMagic(int a[M][M],int n) //求魔方阵各行/列的和{int i,j;for(i=0;i<n;i++) //各行的和for(j=0;j<n;j++)a[i][n]+=a[i][j];for(i=0;i<n;i++) //各列的和for(j=0;j<n;j++)a[n][i]+=a[j][i];for(i=0;i<n;i++)a[n][n]+=a[i][i]; //主对角线的和}void main(){int n;int a[M][M]={0};printf("魔方阵的阶数n="); //n为大于2的任意整数scanf("%d",&n);switch(n%4){case 1:case 3:MagicOdd(a,0,0,1,n);break; //奇数阶魔方阵case 0:MagicDev(a,1,n);break; //双偶(4k)阶魔方阵case 2:MagicSev(a,1,n);break; //单偶(4k+2)阶魔方阵}SumMagic(a,n); //计算各行/列的和OutMagic(a,n); //输出魔方阵printf("\n\n校验:\n");OutMagic(a,n+1); //输出魔方阵及各行/列的和进行验证}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

P141 5.求Sn=a+aa+aaa+…+aa ….a 之值,其中a 是一个数字。

如:2+22+222+2222(n=4),n 由键盘输入。

7.求
∑∑∑===++100
150110
1
2
1k k k k k k
P168
7.输出魔方阵,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。

解:魔方阵中各数的排列规律如下:
1.)将1放在第一行中间的一列。

2.) 从2开始直到n×n止各数依次按下列规律存放:每一个数存放的行比前一个数的行数减
1,列数加1(如三阶魔方阵,5在4的上一行,后一列)。

3)如果上一数的行数为一,则下一个数的行数为n(指最下一行)。

例如,1在第一行,则2应放在最下一行,列数加1。

4)当上一个数的列数为n时,下一个数的列数应为1,行数减1。

例如,2在第3行最后一列,则3应放在第2行第1列。

5)如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。

例:4应放在第一行第二列,但位置已被1占据,所以4就放在3的下面。

由于6是第一行第三列(即最后一列),故7放在6下面。

N-S图:
10.有一篇文章,共有3行文字,每行80个字符。

要求分别统计出其中英文大写字母、小写
字母、数字、空格,以及其他字符个数。

解:N-S图
程序:
P218
4.编写一个函数,使给定的一个二维数组(3×3)转置(行列互换)
10.写一个函数,输入一行字符,将此字符串中最长的单词输出。

分析:单词是由全字母组成的字符串,程序中设longest函数的作用是找最长单词的位置。

此函数的返回值是该行字符中最长函数单词的起始位置。

Longest N-S图
说明:flag表示单词是否已经开始,flag=0表示未开始,flag=1表示单词开始;len代表当前单词已累计的字母个数;length代表先前单词中最长单词长度;point 代表当前单词起始位置(用下标表示);place代表最长单词的起始位置。

函数alphabetic的作用是判断当前字符是否是字母,若是则返回1,否则返回0。

相关文档
最新文档