日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

任意阶幻方(魔方矩阵)C语言实现

發布時間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 任意阶幻方(魔方矩阵)C语言实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
魔方又稱幻方、縱橫圖、九宮圖,最早記錄于我國古代的洛書。據說夏禹治水時,河南洛陽附近的大河里浮出了一只烏龜,背上有一個很奇怪的圖形,古人認為是一種祥瑞,預示著洪水將被夏禹王徹底制服。后人稱之為"洛書"或"河圖",又叫河洛圖。 南宋數學家楊輝,在他著的《續古摘奇算法》里介紹了這種方法:只要將九個自然數按照從小到大的遞增次序斜排,然后把上、下兩數對調,左、右兩數也對調;最后再把中部四數各向外面挺出,幻方就出現了。 (摘自《趣味數學辭典》) 在西方,阿爾布雷特·丟勒于1514年創作的木雕《憂郁》是最早關于魔方矩陣的記載。有學者認為,魔方矩陣和風靡一時的煉金術有關。幾個世紀以來,魔方矩陣吸引了無數的學者和數學愛好者。本杰明·富蘭克林就做過有關魔方矩陣的實驗。 最簡單的魔方就是平面魔方,還有立體魔方、高次魔方等。對于立體魔方、高次魔方世界上很多數學家仍在研究,本文只討論平面魔方。 每行、每列及對角線之和被稱為魔術常量或魔法總和,M。 其中,n為階數。 例如,如果n=3,則M=[3*(3^2+1)]/2 = 15.

------------------來自百度

?

先標出引用地址:

http://blog.ddedu.com.cn/user1/88/archives/2007/2007420143329.shtml ? //任意階幻方構造方法

http://blog.csdn.net/cmutoo/article/details/5487157 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//任意階幻方C語言代碼實現(有些許錯誤)

?

基礎知識這里看:http://blog.csdn.net/oowgsoo/article/details/1567910

?

任意階幻方的構造方法有很多種,所以要選定一種易于代碼實現的一種

在上篇博客中說道:

/************************************************************************************

幻方的數量:
與我們大多數人的常識不同,幻方的數量不是唯一的,而且也不是一個簡單的問題
3階幻方只有1種
4階幻方有880種,通過旋轉和反射,總共可以有7040個幻方
5階幻方有275 305 224個,這是用計算機算的
6階幻方,大概是1.7743*10**19~1.7766*10**19之間,這是用統計學方法計算的,居然計算機也算不出來,更不要說6階以上的幻方數量了

************************************************************************************/

所以代碼實現的就有很大的局限性,只能實現某一種構造方法的幻方

幻方構造分為

1、奇數階

2、雙偶階

3、單偶階

三種。

對于奇數階的幻方:

/*******************************************************************

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)。
  這種寫法總是先向“右上”的方向,象是在爬樓梯。 *******************************************************************/ 其實在C語言實現時是有潛在的規律的,當要填的數為n的倍數時,說明所要放的格已經有數填入 實現過程也是很巧妙…… void Odd(int n,int index) {while(st != index){cube[ox+stx][oy+sty] = st++;if((st-1) % n != 0){stx--;sty++;}else{stx++;}stx = ((stx-1)%n+n)%n+1;sty = (sty%n == 0 ? n : sty%n);} }

對于雙偶數階的

就是一個中心對稱

void DouEven(int n) {int i,j;int st = 1;for(i=1; i<=n; i++){for(j=1; j<=n; j++){cube[i][j] = st++;}}int zx,zy,fx,fy;for(i=4; i<=n*n; i+=4){for(j=4; j<=n*n; j+=4){zx=i-3,zy=j-3,fx=i,fy=j-3;cube[zx][zy]=n*n-cube[zx][zy]+1;cube[zx+1][zy+1]=n*n-cube[zx+1][zy+1]+1;cube[zx+2][zy+2]=n*n-cube[zx+2][zy+2]+1;cube[zx+3][zy+3]=n*n-cube[zx+3][zy+3]+1;cube[fx][fy]=n*n-cube[fx][fy]+1;cube[fx-1][fy+1]=n*n-cube[fx-1][fy+1]+1;cube[fx-2][fy+2]=n*n-cube[fx-2][fy+2]+1;cube[fx-3][fy+3]=n*n-cube[fx-3][fy+3]+1;}} }

對于單偶數階的,麻煩許多

因為要用到奇數階的構造方法

void SingleEven(int n) {int i,j;ox=oy=0;st=1;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*1/4+1); //A ox=oy=n/2;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*2/4+1); //D ox=0,oy=n/2;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*3/4+1); //B ox=n/2,oy=0;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*4/4+1); //Cint k=(n-2)/4,tmp;for(j=1; j<=n/2; j++){for(i=1; i<=k; i++){if(j != (n/2+1)/2){tmp = cube[j][i];cube[j][i] = cube[j+n/2][i];cube[j+n/2][i] = tmp;}else{tmp = cube[j][i+(n/2+1)/2-1];cube[j][i+(n/2+1)/2-1] = cube[j+n/2][i+(n/2+1)/2-1];cube[j+n/2][i+(n/2+1)/2-1] = tmp;}}}if(k-1){for(i=1; i<=n/2; i++){int tmpp = (3*n+2)/4-1;for(j=1; j<=k-1; j++){tmp = cube[i][j+tmpp];cube[i][j+tmpp] = cube[i+n/2][j+tmpp];cube[i+n/2][j+tmpp] = tmp;}}} }

?

最后貼一個完整的代碼:

#include <stdio.h> #include <string.h>int cube[1000][1000]; int stx,sty; int st; int num; int ox,oy;void Odd(int n,int index) {while(st != index){cube[ox+stx][oy+sty] = st++;if((st-1) % n != 0){stx--;sty++;}else{stx++;}stx = ((stx-1)%n+n)%n+1;sty = (sty%n == 0 ? n : sty%n);} }void DouEven(int n) {int i,j;int st = 1;for(i=1; i<=n; i++){for(j=1; j<=n; j++){cube[i][j] = st++;}}int zx,zy,fx,fy;for(i=4; i<=n*n; i+=4){for(j=4; j<=n*n; j+=4){zx=i-3,zy=j-3,fx=i,fy=j-3;cube[zx][zy]=n*n-cube[zx][zy]+1;cube[zx+1][zy+1]=n*n-cube[zx+1][zy+1]+1;cube[zx+2][zy+2]=n*n-cube[zx+2][zy+2]+1;cube[zx+3][zy+3]=n*n-cube[zx+3][zy+3]+1;cube[fx][fy]=n*n-cube[fx][fy]+1;cube[fx-1][fy+1]=n*n-cube[fx-1][fy+1]+1;cube[fx-2][fy+2]=n*n-cube[fx-2][fy+2]+1;cube[fx-3][fy+3]=n*n-cube[fx-3][fy+3]+1;}} }void SingleEven(int n) {int i,j;ox=oy=0;st=1;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*1/4+1); //A ox=oy=n/2;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*2/4+1); //D ox=0,oy=n/2;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*3/4+1); //B ox=n/2,oy=0;stx=1,sty=(n/2+1)/2;Odd(n/2,n*n*4/4+1); //Cint k=(n-2)/4,tmp;for(j=1; j<=n/2; j++){for(i=1; i<=k; i++){if(j != (n/2+1)/2){tmp = cube[j][i];cube[j][i] = cube[j+n/2][i];cube[j+n/2][i] = tmp;}else{tmp = cube[j][i+(n/2+1)/2-1];cube[j][i+(n/2+1)/2-1] = cube[j+n/2][i+(n/2+1)/2-1];cube[j+n/2][i+(n/2+1)/2-1] = tmp;}}}if(k-1){for(i=1; i<=n/2; i++){int tmpp = (3*n+2)/4-1;for(j=1; j<=k-1; j++){tmp = cube[i][j+tmpp];cube[i][j+tmpp] = cube[i+n/2][j+tmpp];cube[i+n/2][j+tmpp] = tmp;}}} }void print(int n) {int i,j;for(i=1; i<=n; i++){int sum = 0;for(j=1; j<=n ; j++){sum += cube[i][j];printf("%4d",cube[i][j]);}printf(" sum = %d",sum);printf("\n");} }int main() {int i,j,k,t,n,m;do{printf("Please Input n(3-17): ");scanf("%d",&n);if(n<3)continue;memset(cube,0,sizeof(cube));if(n % 2 == 1){stx=1,sty=(n+1)/2;ox=oy=0;st=1;Odd(n,n*n+1);print(n);}else if(n % 4 == 0){DouEven(n);print(n);}else if(n % 2 ==0 && n % 4 != 0){SingleEven(n);print(n);}}while(1);return 0; }

再上一個專門關于介紹幻方的博客:http://blog.sina.com.cn/u/1225071715

?

轉載于:https://www.cnblogs.com/ccccnzb/p/4017872.html

總結

以上是生活随笔為你收集整理的任意阶幻方(魔方矩阵)C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜精品福利视频 | 日本一品道 | 亚洲逼逼 | 精品国产一区二区三区久久久蜜月 | 蜜臀少妇久久久久久久高潮 | 森泽佳奈中文字幕 | 欧美激情一级 | 成人涩涩网 | 九热视频在线观看 | 影音先锋色小姐 | 中文字幕人成乱码熟女香港 | 亚洲狠狠操 | 美色视频 | 天天射干 | 韩国国产在线 | 国产视频一区在线 | 国产精品久久久久久久久久直播 | 欧美色涩在线第一页 | 性xxxx视频播放免费 | 黄网站在线观 | 精品人妻无码一区二区性色 | 国产女人叫床高潮大片免费 | 亚洲美女福利视频 | 夜色综合| 玖玖zyz | 欧美在线播放一区 | 在线免费观看高清视频 | 欧美性生交片4 | 好吊妞视频这里只有精品 | 一区二区三区视频在线播放 | 日韩有码中文字幕在线 | 日本三级一区二区 | 暖暖日本在线视频 | 国产免费观看一区 | 国产精品av免费观看 | 成人在线视频一区二区三区 | 欧美日韩一区二区三区四区五区 | 最近最新中文字幕 | 天堂视频一区二区 | 日日夜夜草 | 欧美男人天堂 | 亚洲国产精品毛片av不卡在线 | 国产对白自拍 | 动漫大乳美女 | 久免费一级suv好看的国产 | 欧美a v在线播放 | 成人在线免费看 | 看av在线 | 亚洲天堂手机版 | 蜜桃精品成人影片 | 国产精品成人久久久久 | 中文字幕第9页 | 久久视频在线 | 天天爱综合 | av字幕网 | 亚洲hh | 999av | 国产精品久久在线观看 | 久草高清 | 国产aⅴ精品一区二区三区久久 | 欧美性极品少妇xxxx | 日韩一区二区三区免费 | 日韩欧美www| 高潮毛片| 亚洲欧美精品一区二区三区 | 黄色三级在线观看 | 人人插人人澡 | 国产欧美一区二区精品性色超碰 | 偷偷操视频 | 综合五月天 | 久久国产黄色片 | 色网站女女 | 免费在线看污 | 中文字幕 视频一区 | 亚洲精品视 | 天堂网www在线 | 青草成人| 西西久久 | 91美女啪啪 | 亚洲精品久久久久久久久久吃药 | 国产精品白嫩极品美女视频 | 黄色三级三级三级三级 | 麻豆一区二区在线观看 | 五月天国产视频 | 我我色综合 | av亚洲在线观看 | 日本免费黄色片 | 女生喷液视频 | 夜夜骑av | 国产成人看片 | 巨胸喷奶水www久久久免费动漫 | 久久网站免费观看 | 国产一级理论片 | 亚洲无人区小视频 | 三级在线网址 | 精品乱 | 国产在线播放一区二区三区 | 久久亚洲高清 | 日韩福利在线视频 |