双偶幻方的c语言算法,单偶阶、双偶阶幻方的巧妙填法
单偶阶、双偶阶幻方的巧妙填法
单偶阶、双偶阶幻方的巧妙填法
人气: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语言算法,单偶阶、双偶阶幻方的巧妙填法相关推荐
- android 双缓冲地图,卡马克卷轴算法的研究地图双缓冲.doc
卡马克卷轴算法的研究地图双缓冲 第 PAGE 12 页 共 NUMPAGES 25 页 卡马克卷轴算法研究摘要与关键词 卡马克卷轴算法研究 中文摘要 对于J2ME框架下的手机游戏程序的开发,其地图滚动 ...
- python中字符串单引号、双引号、三引号_Python:字符串单引号(‘)、双引号(“)、三单引号(”’)和三双引号(“””)的区别...
实际上在Python中'...'和"..."是完全一样的,但不能出现'..."和"...'这种情况. 而将其混合使用会有很多意想不到的效果: 具体规则如下: 若 ...
- 单引号,双引号,三引号的区别
单引号,双引号,三引号的区别 单引号和双引号都可以用来表示一个字符串 单引号,双引号都用到包裹字符串,唯一不同用法在于如果字符串内有需要转义 的字符时候 ,单引号必须加反斜杠 3个引号还有一个特别棒的 ...
- 【python】数据结构和算法 + 浅谈单链表与双链表的区别
有这么一句话说"程序=数据结构+算法",也有人说"如果把编程比作做菜,那么数据结构就好比食材(菜),算法就好比厨艺(做菜的技巧)". 当然这是笼统的说法,不过也 ...
- TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现
TypeScript算法专题 - 基于TypeScript语言的单链表实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.csdn.n ...
- R语言使用latticeExtra包可视化双Y轴线图实战(Dual Y axis):单y轴线图、双y轴图线图、双y轴图线图(添加图例)
R语言使用latticeExtra包可视化双Y轴线图实战(Dual Y axis):单y轴线图.双y轴图线图.双y轴图线图(添加图例) 目录
- c语言双链表排序交换节点_图解:单链表翻转的三种方式!
当我们在聊到链表反转的时候,一定说的都是单链表,双链表本身就具有前驱指针 Prev 和后续指针 next,无需进行翻转. 单链表反转,反转后的效果如下: 看起来很简单,只需要将单链表所有结点的 nex ...
- 三相永磁同步电机(PMSM) 单矢量、占空比、双矢量电流预测控制 MATLA b仿真算法
三相永磁同步电机(PMSM) 单矢量.占空比.双矢量电流预测控制 MATLA b仿真算法: (1)采用电流预测控制: (2)采用转速.电流双闭环控制: (3)转速环采用PI控制: (4)电流环采用电流 ...
- html语言中的双冒号,css单冒号和双冒号用法和区别
最近突然被别人问起css单冒号和双冒号有什么区别,答曰:"不知道". 虽然还在填坑中,但作为一个跨过了初级的FEer,感觉着实汗颜,刚好今天下午在搜别的问题的时候,突然看到一个对比 ...
最新文章
- java程序练习:猜字母
- 本文把TCP/IP讲绝了!
- centos 6.5安装mysql5.7,centos6.5安装mysql5.7
- SQL Server安全(11/11):审核(Auditing)
- html计算器_学习HTML、CSS和JavaScript的最佳方法是什么?
- GDI+ 应用,Release没有错误,Debug很多。
- 2.6 定位数据不匹配
- python批量裁剪矢量数据_ARCGIS\python批量裁剪栅格数据
- 程序员如何从0到1搭建自己的技术博客
- 安卓3d游戏开发引擎_微信小游戏开发怎么选游戏引擎
- 第二章 ZeroMQ进阶
- python免费 爬取原创力文档并转换成pdf(部分版)
- 如何删除顽固文件或文件夹?
- lwj_C#_周总结2 字符串练习
- Android集成FBReader(精简版)指南
- 软件测试-软件及分类
- 蓝奏云软件库源码分享下载(后端源码)
- 洛谷.P3374 树状数组
- Java并发(一)并发基础
- HTML5基础:布局和标签