单偶阶、双偶阶幻方的巧妙填法

单偶阶、双偶阶幻方的巧妙填法

人气:150 ℃时间:2019-12-07 19:18:09

优质解答

一、双偶幻方的解法

能被4整除的n阶幻方叫双偶幻方,如8阶、12阶、16阶等,双偶幻方用Spring法、Strachey法生成.

1、Spring法生成双偶幻方:

方法就是两句话:顺序填数,以中心点对称互换数字.

第一步,顺序填数;

简单地说,就是1放在幻方的任意一个角格,然后按同一个方向按顺序依次填写其余数.

以8阶幻方为例,顺序填数.如下所示:

1\x092\x093\x094\x095\x096\x097\x098

9\x0910\x0911\x0912\x0913\x0914\x0915\x0916

17\x0918\x0919\x0920\x0921\x0922\x0923\x0924

25\x0926\x0927\x0928\x0929\x0930\x0931\x0932

33\x0934\x0935\x0936\x0937\x0938\x0939\x0940

41\x0942\x0943\x0944\x0945\x0946\x0947\x0948

49\x0950\x0951\x0952\x0953\x0954\x0955\x0956

57\x0958\x0959\x0960\x0961\x0962\x0963\x0964

等等等等,共有8种方法.(以下我只以一种为例讲解.其余方法相同)

第二步,以中心点对称互换数字;

对称互换的方法有两种:

方法一;将左上区域i+j(i行、j列)为偶数的与幻方内以中心点为对称点的右下角对角数字进行交换;将右上区域i+j为奇数的与幻方内以中心点为对称点的左下角对角数字进行交换.(保证不同时为奇或偶即可.)

64\x092\x0962\x094\x095\x0959\x097\x0957

9\x0955\x0911\x0953\x0952\x0914\x0950\x0916

48\x0918\x0946\x0920\x0921\x0943\x0923\x0941

25\x0939\x0927\x0937\x0936\x0930\x0934\x0932

33\x0931\x0935\x0929\x0928\x0938\x0926\x0940

24\x0942\x0922\x0944\x0945\x0919\x0947\x0917

49\x0915\x0951\x0913\x0912\x0954\x0910\x0956

8\x0958\x096\x0960\x0961\x093\x0963\x091

或,

1\x0963\x093\x0961\x0960\x096\x0958\x098

56\x0910\x0954\x0912\x0913\x0951\x0915\x0949

17\x0947\x0919\x0945\x0944\x0922\x0942\x0924

40\x0926\x0938\x0928\x0929\x0935\x0931\x0933

32\x0934\x0930\x0936\x0937\x0927\x0939\x0925

41\x0923\x0943\x0921\x0920\x0946\x0918\x0948

16\x0950\x0914\x0952\x0953\x0911\x0955\x099

57\x097\x0959\x095\x094\x0962\x092\x0964

完成幻方,幻和值260.

方法二;将幻方等分成m*m个4阶幻方,将各4阶幻方中对角线上(或非对角线上)的方格内数字与n阶幻方内以中心点为对称点的对角数字进行交换.

下图为将各4阶幻方中对角线上的方格内数字与n阶幻方内以中心点为对称点的对角数字进行交换,完成幻方,幻和值260.

64\x092\x093\x0961\x0960\x096\x097\x0957

9\x0955\x0954\x0912\x0913\x0951\x0950\x0916

17\x0947\x0946\x0920\x0921\x0943\x0942\x0924

40\x0926\x0927\x0937\x0936\x0930\x0931\x0933

32\x0934\x0935\x0929\x0928\x0938\x0939\x0925

41\x0923\x0922\x0944\x0945\x0919\x0918\x0948

49\x0915\x0914\x0952\x0953\x0911\x0910\x0956

8\x0958\x0959\x095\x094\x0962\x0963\x091

下图为将各4阶幻方中非对角线上的方格内数字与n阶幻方内以中心点为对称点的对角数字进行交换,完成幻方,幻和值260.

1\x0963\x0962\x094\x095\x0959\x0958\x098

56\x0910\x0911\x0953\x0952\x0914\x0915\x0949

48\x0918\x0919\x0945\x0944\x0922\x0923\x0941

25\x0939\x0938\x0928\x0929\x0935\x0934\x0932

33\x0931\x0930\x0936\x0937\x0927\x0926\x0940

24\x0942\x0943\x0921\x0920\x0946\x0947\x0917

16\x0950\x0951\x0913\x0912\x0954\x0955\x099

57\x097\x096\x0960\x0961\x093\x092\x0964

2、Strachey法生成双偶幻方

第一步,将n阶双偶幻方表示为4m阶幻方.将其等分为四分,成为如下图所示A、B、C、D四个2m阶偶数幻方.

A C

D B

A用1至(2m)^2填写成2m阶幻方;B用(2m)^2+1至2*(2m)^2填写成2m阶幻方;C用2*(2m)^2+1至3*(2m)^2填写成2m阶幻方;D用3*(2m^)2+1至4*(2m)^2填写成2m阶幻方;

将8阶双偶幻方表示为4×2阶幻方.将其等分为四个2×2阶偶数幻方,即4阶偶数幻方.

16\x092\x093\x0913\x0948\x0934\x0935\x0945

5\x0911\x0910\x098\x0937\x0943\x0942\x0940

9\x097\x096\x0912\x0941\x0939\x0938\x0944

4\x0914\x0915\x091\x0936\x0946\x0947\x0933

64\x0950\x0951\x0961\x0932\x0918\x0919\x0929

53\x0959\x0958\x0956\x0921\x0927\x0926\x0924

57\x0955\x0954\x0960\x0925\x0923\x0922\x0928

52\x0962\x0963\x0949\x0920\x0930\x0931\x0917

第三步,在A每行取m个小格(一侧对角线格为必换格,其余m-1格只要不是另一侧对角线格即可),将其与D相应方格内交换;B与C以相同方法进行.

对于8阶幻方,A每行取2个小格(一侧对角线格为必换格,其余1格只要不是另一侧对角线格即可),要与D相应方格内交换;C与B以相同方法进行.

最简单的方法就是:A任意2列,与D相对应的2列互换,C任意2列,与B相对应的2列互换即可.

64\x0950\x093\x0913\x0948\x0934\x0919\x0929

53\x0959\x0910\x098\x0937\x0943\x0926\x0924

57\x0955\x096\x0912\x0941\x0939\x0922\x0928

52\x0962\x0915\x091\x0936\x0946\x0931\x0917

16\x092\x0951\x0961\x0932\x0918\x0935\x0945

5\x0911\x0958\x0956\x0921\x0927\x0942\x0940

9\x097\x0954\x0960\x0925\x0923\x0938\x0944

4\x0914\x0963\x0949\x0920\x0930\x0947\x0933

64\x0950\x093\x0913\x0932\x0918\x0935\x0945

53\x0959\x0910\x098\x0921\x0927\x0942\x0940

57\x0955\x096\x0912\x0925\x0923\x0938\x0944

52\x0962\x0915\x091\x0920\x0930\x0947\x0933

16\x092\x0951\x0961\x0948\x0934\x0919\x0929

5\x0911\x0958\x0956\x0937\x0943\x0926\x0924

9\x097\x0954\x0960\x0941\x0939\x0922\x0928

4\x0914\x0963\x0949\x0936\x0946\x0931\x0917

等等完成幻方,幻和值260.

二、单偶幻方的解法

单偶幻方用Strachey法完成:将n阶单偶幻方表示为4m+2阶幻方.将其等分为四分,成为如下图所示A、B、C、D四个2m+1阶奇数幻方.

A C

D B

A用1至2m+1填写成(2m+1)2阶幻方;B用(2m+1)2+1至2*(2m+1)2填写成2m+1阶幻方;C用2*(2m+1)2+1至3*(2m+1)2填写成2m+1阶幻方;D用3*(2m+1)2+1至4*(2m+1)2填写成2m+1阶幻方;

【注:(2m+1)2是(2m+1)的平方,以下同】

8\x091\x096\x0926\x0919\x0924

3\x095\x097\x0921\x0923\x0925

4\x099\x092\x0922\x0927\x0920

35\x0928\x0933\x0917\x0910\x0915

30\x0932\x0934\x0912\x0914\x0916

31\x0936\x0929\x0913\x0918\x0911

在A每行取m个小格(中心格及一侧对角线格为必换格,其余m-1格只要不是另一侧对角线格即可),也就是说在A中间一行取包括中心格在内的m个小格,其他行左侧边缘取m个小格,将其与D相应方格内交换;B与C任取m-1列相互交换.

6阶幻方就是4*1+2,那么m就是1.在A中间一行取中心格1个小格,其他行左侧边缘取1个小格,将其与D相应方格内交换;B与C接近右侧m-1列相互交换(6阶幻方m-1=0,则不用互换).如下图用Strachey法生成的6阶幻方:

35\x091\x096\x0926\x0919\x0924

3\x0932\x097\x0921\x0923\x0925

31\x099\x092\x0922\x0927\x0920

8\x0928\x0933\x0917\x0910\x0915

30\x095\x0934\x0912\x0914\x0916

4\x0936\x0929\x0913\x0918\x0911

每一行,每一列,对角线的和值(称为幻和值)为111.

一个n阶幻方幻和值公式为:

Nn=1/2xn(n2+1)

【注:n2是n的平方】

N6=1/2x6x(36+1)=111

我来回答

类似推荐

双偶幻方的c语言算法,单偶阶、双偶阶幻方的巧妙填法相关推荐

  1. android 双缓冲地图,卡马克卷轴算法的研究地图双缓冲.doc

    卡马克卷轴算法的研究地图双缓冲 第 PAGE 12 页 共 NUMPAGES 25 页 卡马克卷轴算法研究摘要与关键词 卡马克卷轴算法研究 中文摘要 对于J2ME框架下的手机游戏程序的开发,其地图滚动 ...

  2. python中字符串单引号、双引号、三引号_Python:字符串单引号(‘)、双引号(“)、三单引号(”’)和三双引号(“””)的区别...

    实际上在Python中'...'和"..."是完全一样的,但不能出现'..."和"...'这种情况. 而将其混合使用会有很多意想不到的效果: 具体规则如下: 若 ...

  3. 单引号,双引号,三引号的区别

    单引号,双引号,三引号的区别 单引号和双引号都可以用来表示一个字符串 单引号,双引号都用到包裹字符串,唯一不同用法在于如果字符串内有需要转义 的字符时候 ,单引号必须加反斜杠 3个引号还有一个特别棒的 ...

  4. 【python】数据结构和算法 + 浅谈单链表与双链表的区别

    有这么一句话说"程序=数据结构+算法",也有人说"如果把编程比作做菜,那么数据结构就好比食材(菜),算法就好比厨艺(做菜的技巧)". 当然这是笼统的说法,不过也 ...

  5. TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现

    TypeScript算法专题 - 基于TypeScript语言的单链表实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.n ...

  6. R语言使用latticeExtra包可视化双Y轴线图实战(Dual Y axis):单y轴线图、双y轴图线图、双y轴图线图(添加图例)

    R语言使用latticeExtra包可视化双Y轴线图实战(Dual Y axis):单y轴线图.双y轴图线图.双y轴图线图(添加图例) 目录

  7. c语言双链表排序交换节点_图解:单链表翻转的三种方式!

    当我们在聊到链表反转的时候,一定说的都是单链表,双链表本身就具有前驱指针 Prev 和后续指针 next,无需进行翻转. 单链表反转,反转后的效果如下: 看起来很简单,只需要将单链表所有结点的 nex ...

  8. 三相永磁同步电机(PMSM) 单矢量、占空比、双矢量电流预测控制 MATLA b仿真算法

    三相永磁同步电机(PMSM) 单矢量.占空比.双矢量电流预测控制 MATLA b仿真算法: (1)采用电流预测控制: (2)采用转速.电流双闭环控制: (3)转速环采用PI控制: (4)电流环采用电流 ...

  9. html语言中的双冒号,css单冒号和双冒号用法和区别

    最近突然被别人问起css单冒号和双冒号有什么区别,答曰:"不知道". 虽然还在填坑中,但作为一个跨过了初级的FEer,感觉着实汗颜,刚好今天下午在搜别的问题的时候,突然看到一个对比 ...

最新文章

  1. java程序练习:猜字母
  2. 本文把TCP/IP讲绝了!
  3. centos 6.5安装mysql5.7,centos6.5安装mysql5.7
  4. SQL Server安全(11/11):审核(Auditing)
  5. html计算器_学习HTML、CSS和JavaScript的最佳方法是什么?
  6. GDI+ 应用,Release没有错误,Debug很多。
  7. 2.6 定位数据不匹配
  8. python批量裁剪矢量数据_ARCGIS\python批量裁剪栅格数据
  9. 程序员如何从0到1搭建自己的技术博客
  10. 安卓3d游戏开发引擎_微信小游戏开发怎么选游戏引擎
  11. 第二章 ZeroMQ进阶
  12. python免费 爬取原创力文档并转换成pdf(部分版)
  13. 如何删除顽固文件或文件夹?
  14. lwj_C#_周总结2 字符串练习
  15. Android集成FBReader(精简版)指南
  16. 软件测试-软件及分类
  17. 蓝奏云软件库源码分享下载(后端源码)
  18. 洛谷.P3374 树状数组
  19. Java并发(一)并发基础
  20. HTML5基础:布局和标签

热门文章

  1. Windows XP 打印机端口LPT1 响应挂死 解决
  2. js ios和安卓的兼容时间处理
  3. 自己总结的linux命令
  4. 清橙A1206 小Z的袜子(莫队算法)
  5. 计算机管理储存u盘无法使用,U盘无法识别的三种常见情况
  6. @ELK集群环境部署搭建
  7. Python中的数据序列(元组、集合、字典)
  8. vmware虚拟机不能识别u盘/移动硬盘原因之一
  9. NAT hairpin,端口回流,回环NAT
  10. 试用期、见习期、实习期、合同期、服务期的区别与应用