版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、九宮格的解題過(guò)程第1步首先計(jì)算每行數(shù)字之和。19九個(gè)數(shù)字之和:12345678945九宮格共有三行,并且每行的數(shù)字之和相等,因此45/315,即每行數(shù)字之和為15。第2步計(jì)算中間格的數(shù)字??紤]第2行,第2列,和2條對(duì)角線的數(shù)字之和。它們的總和為 15/4 60。在它們的總和中,中間格子的數(shù)字出現(xiàn)了4次,其它位置格子的數(shù)字都出現(xiàn)了而且僅出現(xiàn)了1次。所以,它們的總和(4×中間格子的數(shù)字)(其它8個(gè)數(shù)字)
2、 (3×中間格子的數(shù)字)(19九個(gè)數(shù)字之和)因此, 603×中間格子的數(shù)字45,中間格子的數(shù)字等于5第3步,奇數(shù)不能出現(xiàn)在4個(gè)角上的格子里。比如,如果數(shù)字9出現(xiàn)在角上的格子里,那么為了保證9所在行或所在列的數(shù)字和為15,必須需要4個(gè)數(shù)字,兩兩之和必須為6。1,2,3,4,6,7,8中,只有2和4組成和為6的數(shù)字對(duì),找到第2個(gè)和為6的數(shù)字對(duì)是不可能的。因此,數(shù)字9不能出現(xiàn)在4個(gè)角上的格子里。同樣道理,1,3,7也不能出現(xiàn)在4個(gè)角上的格子里。第4步,2,4,6,8必須填在4個(gè)角上的格子里,并且保證對(duì)角線數(shù)字和為15。第5步,將1,3,
3、7,9填入相應(yīng)的格子里就完成了九宮格填數(shù)字任務(wù),注意和為15的條件。 完成了填九宮格的任務(wù)后,我們進(jìn)一步考慮,如果上面九宮格內(nèi)所有數(shù)字都加數(shù)字1會(huì)發(fā)生什么呢?即可不可以用數(shù)字2,3,4,5,6,7,8,9,10填九宮格,得到每一行,每一列,每一對(duì)角線的三個(gè)數(shù)字之和都相等的新九宮格呢。 顯而易見(jiàn),上面九宮格每行每列每對(duì)角線數(shù)字之和為18,奇數(shù)3,5,7,9處在4個(gè)角上的格子里,中間數(shù)6處在中間的格子里。從19和210各九個(gè)數(shù)字所填充的九宮格可以得出下列規(guī)律:1)九個(gè)數(shù)字是由9個(gè)相連的整數(shù)構(gòu)成的。2)九個(gè)數(shù)字中正中間的數(shù)字填在九宮格的中間格子里。19中的5,2-10中的6等。3
4、)每行每列的數(shù)字和等于中間數(shù)字的三倍。比如155´3和18=6´3。4)第2,4,6,8位的數(shù)字填充到4個(gè)角上的格子里。如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。問(wèn)題1:已知9個(gè)相連的整數(shù)填充的九宮格其每行數(shù)字和為45,求這九個(gè)數(shù)字。中間格數(shù)字為45¸315,15為正中間的數(shù)字,因此九個(gè)數(shù)字為11,12,13,14,15,16,17,18,19。問(wèn)題2:已知9個(gè)相連的整數(shù)填充的九宮格其每行數(shù)字和為96,求九宮格4個(gè)角上格子里的數(shù)。96¸332,得到九個(gè)數(shù)字為28,29,30,31,32
5、,33,34,35,36。4個(gè)角上的數(shù)字為29,31,33,35,其中35和29為對(duì)角關(guān)系,31和33為對(duì)角關(guān)系。問(wèn)題3:成公差為d(d!=0)的等差數(shù)列是否也填九宮格?比如公差為3的等差數(shù)列,1,4,7,10,13,16,19,22,25,如何填九宮格呢?5,15,25,35,45,55,65,75,85又怎樣填?古人說(shuō),“學(xué)貴有疑。小疑則小進(jìn),大疑則大進(jìn)”。在學(xué)習(xí)中,我們要注意歸納和演繹能力的培養(yǎng),總結(jié)一些規(guī)律,不但增加了學(xué)習(xí)的有效性和趣味性,對(duì)理解和掌握有關(guān)問(wèn)題也很有益處。培育創(chuàng)新型人才既是學(xué)校和老師的責(zé)任,也是我們學(xué)生要刻意磨練的目標(biāo)。本文通過(guò)詳解九宮格問(wèn)題,得到了一些有意義的結(jié)論和規(guī)
6、律,而這些規(guī)律的獲得使我們對(duì)九宮格問(wèn)題也有了更加深入的認(rèn)識(shí)?;梅降那蠼馊A幻方的解法第一種:楊輝法:九子斜排,上下對(duì)易,左右相更,四維挺出。12 43 5 7 6 8 9 2 9 47 5 36 1 8第二種:九宮圖也是幻方的別稱(chēng),三階幻方就是著名的洛書(shū),他的排列是:“戴九履一,左三右七,二四為肩,六八為足,五居中央(9在上中,1在下中。3在左中,7在右中,2
7、在左上,4在右上,6在左下,8在右下)第三種:羅伯法:最小的數(shù)據(jù)上行中央,依次向右上方斜填,上出框往下寫(xiě),右出框往左填,排重便在下格填,右上排重一個(gè)樣8 1 6 3 5 7 4 9 2四階幻方的解法1、先把這16個(gè)數(shù)字按順序從小到到排成一個(gè)4乘4的方陣2、內(nèi)外四個(gè)角對(duì)角上互補(bǔ)的數(shù)相易,(方陣分為兩個(gè)正方形,外大內(nèi)小,然后把大正方形的四個(gè)對(duì)角上的數(shù)字對(duì)換,小正方形四個(gè)對(duì)角上的數(shù)字對(duì)換)即(1,16)(4,13)互換(6,11)(7,10)互換16 2 3 135 11 10 89 7 6 124 14 15 1另:對(duì)于n=4k階幻方,我們先把數(shù)字按順序填寫(xiě)。寫(xiě)好后,按4*4把
8、它劃分成k*k個(gè)方陣。因?yàn)閚是4的倍數(shù),一定能用4*4的小方陣分割。然后把每個(gè)小方陣的對(duì)角線,象制作4階幻方的方法一樣,對(duì)角線上的數(shù)字換成互補(bǔ)的數(shù)字,就構(gòu)成幻方。五階幻方的解法:羅伯法:最小的數(shù)據(jù)上行中央,依次向右上方斜填,上出框往下寫(xiě),右出框往左填,排重便在下格填,右上排重一個(gè)樣。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的右上方應(yīng)該是第五行的第四個(gè), 接下來(lái)在2
9、的右上方填3,3的右上方應(yīng)該是第三行第一個(gè),所以在此填4,在4的右上方填5, 在5的下方填6,接著按前面五個(gè)數(shù)的填法依次填7,8,9,10; 在10的下方填11,然后按上面的方法填, 每次填五個(gè)數(shù),直到完成. 無(wú)論從上到下還是從左到右都是五排, 所以每排的五個(gè)數(shù)之和為(1+2+3+4+25)÷5=65, 因此,你可以驗(yàn)算一下是否每個(gè)和都是65. 此法適合于一切奇階幻方.)數(shù)獨(dú)游戲數(shù)獨(dú),據(jù)說(shuō)最先是在瑞典,后來(lái)到美國(guó),然后到日本被發(fā)揚(yáng)光大。這個(gè)游戲,進(jìn)入了今年上海交大的自主招生試題最后一道大題就是數(shù)獨(dú)題。上面的圖片中,
10、紅色是在玩游戲前給出的數(shù)字,藍(lán)色的數(shù)字就是后填的。游戲的規(guī)則很簡(jiǎn)單,每一行填入19九個(gè)數(shù)字,每一列也填入19九個(gè)數(shù)字,但同時(shí)要滿足每一個(gè)九宮格中也包含19九個(gè)數(shù)字,也就是說(shuō)每一個(gè)九宮格中也填入19九個(gè)數(shù)字。此圖的特別之處就是橫行縱列加上兩條對(duì)角線上的三個(gè)數(shù)字之和均為15。類(lèi)似于這樣的問(wèn)題,也稱(chēng)之為幻方,像上面的九宮格,可稱(chēng)為3階幻方(因每行,每列,兩條對(duì)角線上數(shù)字個(gè)數(shù)是3),還有4階、5階、6階等。此外還可分為奇階幻方和偶階幻方。九宮格就屬于奇階幻方。下面是個(gè)五階幻方?;梅降奶顚?xiě)是有規(guī)律的,我想通過(guò)上面兩個(gè)兩個(gè)幻方可以找到一些規(guī)律。偶階幻方的填寫(xiě)規(guī)律比奇階幻方要稍微復(fù)雜小聲點(diǎn)說(shuō),我還不是太明白
11、,還在繼續(xù)學(xué)習(xí)中。練習(xí)1:.完成一道數(shù)獨(dú)游戲題吧,說(shuō)不定下回哪個(gè)考試也會(huì)有這樣的題呢!練習(xí)2:3階幻方三個(gè)數(shù)的和是15,5階幻方五個(gè)數(shù)的和是65,你能說(shuō)出7階幻方中七個(gè)數(shù)的和是多少嗎?進(jìn)一步,你能說(shuō)出奇階幻方中n個(gè)數(shù)字的和是多少嗎?練習(xí)3: 完成一個(gè)7階幻方。比如說(shuō)三階幻方,先向外翻折擴(kuò)展,然后按上圖左二的規(guī)律,按順序?qū)懮?-9的數(shù)字,接下來(lái)幻方之外的數(shù),按左往右仍,右往左仍,上往下扔,下往上扔的規(guī)律填進(jìn)幻方,將其余的刪去,就得到一個(gè)橫豎斜都等于15的幻方了!下圖是五階幻方的解法,方法相同,只是規(guī)模大了點(diǎn)。七階幻方如下:(唉,上面那種做圖太累,后面的圖就來(lái)自于互聯(lián)網(wǎng)了。)只要按照這個(gè)方法,無(wú)論
12、多少階,只要是個(gè)奇數(shù),都可以畫(huà)得出來(lái),至少一個(gè)!你可以奸詐一點(diǎn),比如說(shuō)畫(huà)好菱形后,1的起始位置是可以換的,寫(xiě)的方向也是可以換的,但是最后出來(lái)的幻方本質(zhì)上是一樣的。對(duì)于偶數(shù)呢,最小是4階的,四階的幻方老師也講了一個(gè)解法,就是大對(duì)角線換,小對(duì)角線也換。步驟如下:先按順序?qū)懗?-16的數(shù)在4階幻方里面,如下:接下來(lái)所謂的大對(duì)角線換,小對(duì)角線換就是1和16換,4和13換,6和11,7和10,換完就出來(lái)了:橫豎斜都是34。然后問(wèn)題就來(lái)了,有沒(méi)有辦法可以解出任意高偶數(shù)階的幻方的方法呢?我曾經(jīng)很傻很天真的試圖把4階這種換對(duì)角線的方法推廣到6階,但是怎么弄都未果,估計(jì)這種方法對(duì)于4階只是種巧合吧。后來(lái)大學(xué)玩m
13、atlab后,發(fā)現(xiàn)matlab里面函數(shù)magic可以輸出任意階的幻方,哦,soga,原來(lái)真的有的啊。后來(lái)我就對(duì)著matlab里面magic的源文件寫(xiě)出了這個(gè)C+版本,只是為了鞏固自己對(duì)四階的理解罷了。然后下面整理一下一般的偶數(shù)階幻方的解法,解法來(lái)源于互聯(lián)網(wǎng)。首先一般的偶數(shù)階解法都是把偶數(shù)分成兩種,4,8,12,16這種4m的雙偶數(shù)和6,10,14這種4m+2的單偶數(shù),一般的解法都是分開(kāi)來(lái)兩類(lèi)的,包括matlab里面的magic函數(shù),不過(guò)查了一下也有很多大牛研究出了統(tǒng)一解法,更有大神把奇偶階全部同意了,膜拜ing。雙偶數(shù)解法:偶數(shù)階下面先講簡(jiǎn)單的雙偶數(shù)解法,看了很多解法,但是最后發(fā)現(xiàn)了一個(gè)通解,
14、網(wǎng)上看到的大部分解法都是這個(gè)通解的特例。首先呢,如下圖所示,先把n階幻方分成4個(gè)小塊,對(duì)于左上角那個(gè)你任意的把一半放個(gè)填成灰色,但是有一個(gè)約束條件,就是左上角這個(gè)小塊中每一行每一列都要只有n/4個(gè)灰色的。然后呢,右上的那個(gè)小塊的填色方案就是左上填色方案的左右鏡像對(duì)稱(chēng),左下的就是左上天色方案的上下鏡像對(duì)稱(chēng),自然,右下就是左上的中心對(duì)稱(chēng)了。如下圖所示:然后呢,你把1-n²這么多個(gè)數(shù)按順序填進(jìn)白色的格子里去,灰色的部分要留著。如下面左圖所示:之后呢,把剩下的沒(méi)填的數(shù)反過(guò)來(lái)填進(jìn)去,也就是從右下到左上的順序,填完雙偶數(shù)階幻方就出來(lái)了。 現(xiàn)在我們來(lái)討論一下這種方法,首先看我們?cè)镜乃碾A
15、幻方的解法,有沒(méi)有發(fā)現(xiàn)其實(shí)和這種方法是一個(gè)東西。然后再看看雙偶數(shù)階的另一種解法,比如說(shuō)下面這個(gè)8階幻方:這里的解法呢,就是把整個(gè)幻方分成2×2個(gè)4×4的小塊,按順序填好1-64個(gè)數(shù),然后每個(gè)4×4小塊的對(duì)角線上的數(shù)不變,其余的數(shù)做中心對(duì)稱(chēng)。再看看下面這個(gè):12階,分成3×3個(gè)4×4的小塊,和之前一樣,按順序填好數(shù),然后每個(gè)4×4小塊的對(duì)角線上的數(shù)不變,其余的數(shù)做中心對(duì)稱(chēng)。雖然和我最開(kāi)始的那種分法不一樣,但是你仔細(xì)一想,其實(shí)是完全一樣的,只是他的填色方案是固定的一種模式而已。還有一種說(shuō)法是每個(gè)小塊對(duì)角線上的數(shù)換成互補(bǔ)的那個(gè)數(shù),其實(shí)本質(zhì)還
16、是一樣嘛。下面是一個(gè)雙偶數(shù)的matlab程序,我填色方案用時(shí)是國(guó)際象棋棋盤(pán)那種黑白相間。function a = hf_4m(n)flag = zeros(n/2,n/2);flag(1:2:n/2,1:2:n/2) = 1;flag(2:2:n/2,2:2:n/2) = 1;flag = flag fliplr(flag);flipud(flag) flipud(fliplr(flag);a = reshape(1:n2,n,n)'a = a .* flag;a = reshape(a',1,n2);blank_idx = find(a=0);number_left = (1
17、:n2) .* (a=0);number_left = fliplr(setdiff(number_left,0);a(blank_idx) = number_left;a = reshape(a,n,n)'單偶數(shù)解法:下面來(lái)看看單偶數(shù)的解法,這種現(xiàn)在主要有兩種方法,分區(qū)法和易位法。其中呢,分區(qū)法也有兩種。先說(shuō)分區(qū)法,首先呢就是把方陣劃分成下面A,B,C,D四塊,因?yàn)槭菃闻紨?shù),所以每一塊必然是個(gè)奇數(shù)幻方。然后把1n²/4這些數(shù)組成的奇數(shù)階幻方算出來(lái),填進(jìn)A里面,然后接下來(lái)的n²/4的幻方填進(jìn)D里面,(其實(shí)有個(gè)很簡(jiǎn)單的方法,就是把A里面的每個(gè)數(shù)加上n²/4就
18、可以了),再把D里面的加上n²/4放到B里面,最后那些放到C里面。下面是10階幻方的一個(gè)例子:然后下面的東西有點(diǎn)拗口,但是細(xì)細(xì)讀就會(huì)明白了:先假設(shè)階數(shù)是4k+2,那么k=(n-2)/4,然后下面是第一種方法:從A小塊的中間行中間格開(kāi)始(上圖中的13),向右找k個(gè)數(shù)(包括中間行中間格那個(gè)),和C小塊的相應(yīng)位置的數(shù)換位。A小塊的其他行(也就是除了最中間那一行)從最左開(kāi)始數(shù)出k個(gè)數(shù),和C中相應(yīng)位置的數(shù)換。B小塊中間列開(kāi)始,向左數(shù)K-1列出來(lái)(當(dāng)然也包括B小塊中間那一列),然后這些列和D小塊中相應(yīng)未知的數(shù)換位。(6階k-1=0,就不用了)然后就完成了。14階幻方的換位方式如下: 這
19、種方法的matlab函數(shù)如下:function a = 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) + n2/4;a(1:n/2,n/2+1:n) = a(1:n/2,1:n/2) + n2/4*2;a(n/2+1:n,1:n/2) = a(1:n/2,1:n/2) + n2/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-
20、1) = a(n/2+1)/2+n/2,(n/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(m>1)temp = a(1:n/2,n*3/4+1/2-m+2:n
21、*3/4+1/2);a(1:n/2,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);a(1+n/2:n,n*3/4+1/2-m+2:n*3/4+1/2) = temp;end然后還有一種換位方法,A小塊中間那一行第2列開(kāi)始往右數(shù)k個(gè)數(shù),和C小塊中相應(yīng)位置的數(shù)換位,A小塊中其余行都從最左開(kāi)始向右數(shù)k列,這些數(shù)也和C小塊的做交換。B小塊中,從最右開(kāi)始向左數(shù)k-1個(gè)列,與D中相應(yīng)位置的數(shù)換位,結(jié)果也是一樣的。這種方法matlab代碼如下:function a = hf_4m_2(n)a = zeros(n,n);a(1:n/
22、2,1:n/2) = magic(n/2);a(n/2+1:n,n/2+1:n) = a(1:n/2,1:n/2) + n2/4;a(1:n/2,n/2+1:n) = a(1:n/2,1:n/2) + n2/4*2;a(n/2+1:n,1:n/2) = a(1:n/2,1:n/2) + n2/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)/
23、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(m>1)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這兩中方法為什么可行我還沒(méi)仔細(xì)研究,但是剛剛編程發(fā)現(xiàn)一個(gè)很神奇的現(xiàn)象,就是第一種方法的
24、BD小塊交換規(guī)則配上第二種方法的AC小塊交換規(guī)則,也是可以的。囧。對(duì)于單偶數(shù)的幻方,還有一種楊輝創(chuàng)造的二階方陣易位法(我發(fā)現(xiàn)楊輝老兄很喜歡玩數(shù)陣)。對(duì)于n = 4m+2階幻方,先用奇數(shù)階的方法做出一個(gè)2m+1階幻方來(lái),然后把1n²那么多個(gè)數(shù)4個(gè)一組,分成(2m+1)²個(gè)組,1,2,3,45,6,7,89,10,11,12分別稱(chēng)為第1組,第2組,第3組第(2m+1)²組。接下來(lái)那每一組四個(gè)數(shù)按下面的方法放入2×2的方陣中:然后把之前那個(gè)2m+1階幻方,每個(gè)位置上的數(shù)如果是i,那么就換成第i組2×2方陣,這樣就有了一個(gè)n×n的方陣了,但是
25、這個(gè)方陣還不是幻方,需要再修正。我們繼續(xù)討論剛才那一個(gè)2m+1階幻方,假設(shè)我們n=14,那么2m+1 = 7,對(duì)于下圖中這個(gè)7階的方陣,我們把倒數(shù)第二行染綠,然后從中間那一行開(kāi)始向下知道倒數(shù)第三行為止全部染藍(lán),如果中間那一行就是倒數(shù)第二行,那么不染藍(lán)。接下來(lái)在把最左和最右兩列的染色向下拉一格。如下圖:我們知道對(duì)應(yīng)于剛剛做出來(lái)的那個(gè)n×n的方陣,每2×2方陣,四個(gè)數(shù)對(duì)應(yīng)于上圖的一個(gè)格。我們現(xiàn)在做如下操作,如果是綠色的格子,那么2×2方陣的最下面兩個(gè)數(shù)交換,如果是藍(lán)色格子的話,2×2方陣不僅下面兩個(gè)數(shù)交換,而且上面兩個(gè)數(shù)也要交換。下面舉個(gè)例子:對(duì)于14階幻方
26、,先生成一個(gè)7階幻方然后把相應(yīng)位置填上相應(yīng)的2階方陣:填好色:綠色格子下面兩個(gè)數(shù)換位,藍(lán)色的上下都換,就得到結(jié)果啦楊輝易位法代碼如下: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*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; %下面兩個(gè)互換if(n > 6) flag(n/2+1)/2:n/2-2,:) = 2;%上
27、面下面都要換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(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喲西,好了,終于寫(xiě)的差不多了。自個(gè)研究了一下,收獲頗多。不過(guò)幻方可不僅僅是
28、構(gòu)造那么簡(jiǎn)單,以前看的一本書(shū)里面有各種變態(tài)的幻方,什么切尾幻方什么的。還有很多數(shù)學(xué)上的東西,下面提問(wèn),請(qǐng)證明:偶數(shù)階幻方行列式值一定是0!下面附上一個(gè)很多年前改寫(xiě)matlab的magic函數(shù)的C+代碼:#include<iostream.h>#include<iomanip.h>classmagicpublic: int *m; magic(); magic(int n); magic(magic &c); void show();
29、 int size;magic:magic(magic &c) int n=c.size; size=n; m=newint*n; for(int l=0;l<n;l+) ml=newintn; for(int k=0;k<n;k+)
30、; mlk=c.mlk; magic:magic(int n) size=n; m=newint*n; for(int l=0;l<n;l+) ml=newintn; for(int k=0;k<n;k+) &
31、#160; mlk=0; void magic:show() for(int l=0;l<size;l+) for(int k=0;k<size;k+) cout<<setw(3)<<mlk<<" " cout<&l
32、t;endl; cout<<endl;magiccreatmagic(int n) intl,k; if(n%2=1) magic i(n),j(n),m(n),a(n),b(n); for(l=0;l<n;l+) for(k=0;k<n;k+)
33、160; j.mlk=k+1; i.mlk=l+1; for(l=0;l<n;l+)
34、; for(k=0;k<n;k+) a.mlk=(i.mlk+j.mlk-(n+3)/2)%n; if(a.mlk<0) a.mlk+=n;
35、160; b.mlk=(i.mlk+j.mlk*2-2)%n; if(b.mlk<0) b.mlk+=n; m.mlk=n*a.mlk+b.mlk+1;
36、 return m; elseif(n%4=0) magic i(n),j(n),d(n),m(n); for(l=0;l<n;l+) for
37、(k=0;k<n;k+) j.mlk=k+1; i.mlk=l+1; d.mlk=( (i.mlk%4)/2) = (j.mlk%4)/2)
38、 ); m.mlk=l*n+k+1; if(d.mlk=1) m.mlk=n*n+1-m.mlk; return m; else
39、60; int p=n/2; magic t(creatmagic(p),m(n); for(l=0;l<n;l+) for(k=0;k<n;k+) if(l<n/2&&k<n/2)
40、0; m.mlk=t.mlk; elseif(l<n/2&&k>=n/2) m.mlk=t.mlk-n/2+2*p*p; elseif(l>=n/2&&k<n/2)
41、0; m.mlk=t.ml-n/2k+3*p*p; else m.mlk=t.ml-n/2k-n/2+p*p; int e=(n-2)/4;
42、160;/cout<<e; for(l=0;l<n;l+) if( ( l>=0 && l<=(e-1) ) | ( l>=(n+1-e) )
43、; for(k=0;k<n/2;k+) int temp=m.mkl;
44、0; m.mkl=m.mk+n/2l; m.mk+n/2l=temp;
45、 int temp=m.me0; m.me0=m.me+n/20; m.me+n/20=temp; temp=m.mee;
46、; m.mee=m.me+n/2e; m.me+n/2e=temp; return m; void main() float m; int n; while(1) cout<<"input the size:&quo
47、t; cin>>m; n=int(m); if(n=2|n<=0) continue; magic result(creatmagic(n); result.show(); c
48、out<<"每一列和為:n" for(int l=0;l<n;l+) cout<<l+1<<":" int sum=0; for(int k=0;k<n;k
49、+) sum+=result.mlk; cout<<result.mlk; if(k!=n-1)
50、60; cout<<"+" cout<<"="<<sum<<endl; cout<<"每一行和為:n" for( l=0;l<n;l+) int sum=0; cout<<l+1<<":"
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 快遞行業(yè)勞動(dòng)保護(hù)集體合同(2篇)
- 上海市購(gòu)房合同樣本
- 家具代理合同模板
- 房屋買(mǎi)賣(mài)合同的終止協(xié)議
- 補(bǔ)貼項(xiàng)目服務(wù)合同示例
- 小程序獨(dú)立開(kāi)發(fā)合同
- 耗材買(mǎi)賣(mài)合同書(shū)格式案例
- 新版無(wú)擔(dān)保貸款合同范本
- 培訓(xùn)場(chǎng)地使用合同
- 無(wú)償借款合同格式模板
- 人工智能賦能語(yǔ)文教育的創(chuàng)新發(fā)展研究
- 六年級(jí)下冊(cè)美術(shù)教學(xué)設(shè)計(jì)《第11課青花瓷韻》浙美版
- 《體育統(tǒng)計(jì)學(xué)》題集
- 2024年廣東省教師繼續(xù)教育信息管理平臺(tái)公需科目《新質(zhì)生產(chǎn)力與高質(zhì)量發(fā)展》試題參考答案
- 茶葉風(fēng)味科學(xué)Ⅱ智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 大學(xué)生心理健康智慧樹(shù)知到期末考試答案章節(jié)答案2024年上海杉達(dá)學(xué)院
- 對(duì)話世界:跨文化交際智慧樹(shù)知到期末考試答案章節(jié)答案2024年青島工學(xué)院
- DB15-T 3447-2024 工程建設(shè)項(xiàng)目“多測(cè)合一”技術(shù)規(guī)程
- 《中國(guó)心力衰竭診斷和治療指南2024》解讀(總)
- 【實(shí)習(xí)護(hù)生從事老年護(hù)理工作意愿調(diào)查及影響因素探析報(bào)告:以S市人民醫(yī)院為例開(kāi)題報(bào)告(含問(wèn)卷)7100字(論文)】
- 特斯拉市場(chǎng)營(yíng)銷(xiāo)分析案例
評(píng)論
0/150
提交評(píng)論