当前位置:首页 » 操作系统 » 左下幻方算法

左下幻方算法

发布时间: 2023-08-12 13:15:50

① 幻方算法

N为4的倍数时
采用对称元素交换法。
首先把数1到n×n按从上至下,从左到右顺序填入矩阵
然后将方阵的所有4×4子方阵中的两对角线上位置的数关于方阵中心作对
称交换,即a(i,j)与a(n-1-i,n-1-j)交换,所有其它位置上的数不变。
(或者将对角线不变,其它位置对称交换也可)
N 为其它偶数时
当n为非4倍数的偶数(即4n+2形)时:首先把大方阵分解为4个奇数(2m+1阶)子方阵。
按上述奇数阶幻方给分解的4个子方阵对应赋值
上左子阵最小(i),下右子阵次小(i+v),下左子阵最大(i+3v),上右子阵次大(i+2v)
即4个子方阵对应元素相差v,其中v=n*n/4
四个子矩阵由小到大排列方式为 ① ③
④ ②
然后作相应的元素交换:a(i,j)与a(i+u,j)在同一列做对应交换(j<t或j>n-t+2),
a(t-1,0)与a(t+u-1,0);a(t-1,t-1)与a(t+u-1,t-1)两对元素交换
其中u=n/2,t=(n+2)/4 上述交换使每行每列与两对角线上元素之和相等。

奇阶
首行中间写1,然后向右上依次填2,3顺着写,出上移下,出右移左,双出(边角)就写在那个数下边。

② 怎样用C语言编写幻方

你的这个问题实际上包括两个问题:
1、幻方的算法
2、怎样用C语言实现幻方的算法
这两个问题是大不同的。

关于幻方的算法,或者叫幻方填法,目前有很多种,拉丁正交、马步法等等,针对奇数或者偶数(又分单偶数和双偶数)等有不同的算法,但这些算法只是帮你找到幻方的一个或多个实例(不会是全部),而同阶数的幻方到底有多少个,那只有用穷举法了,比如4阶幻方,基本4阶幻方共7040个,剔除旋转翻转的,即具有独立结构的共880个;4阶完美幻方共84个,具有独立结构的共48个。

对于高阶幻方(比如超过8阶),穷举法实际上是不可行的,因为它的穷举时间将是天文数字(以目前主流PC),所以不要试图用计算机穷举高阶幻方的全部结果,那将是徒劳的。

如果你只是需要1个实例,那么推荐你使用MATLAB语言工具,因为它提供了幻方函数magic(n),不需要编程,直接从命令窗口输入就可以得到答案。

至于第二个问题,当然你首先会C语言,剩下的就是编程技巧问题了,而这个问题是无从回答的。相信你问的是第一个问题。
以上的回答虽然没有明确给出答案,但相信对你会有帮助。

③ 幻方解法

按照图片的方法楼梯法填写9个数,然后“中部四数各向外挺出“,就得到结果了。下面是5阶幻方的演示,其实3阶幻方也是一样的。

热点内容
xt5轻混选哪个配置 发布:2025-03-11 03:55:43 浏览:793
java获取ftp文件列表 发布:2025-03-11 03:53:56 浏览:553
linux查看配置命令 发布:2025-03-11 03:52:13 浏览:916
python怎样 发布:2025-03-11 03:37:45 浏览:436
备忘录手绘在哪里打开安卓 发布:2025-03-11 03:36:03 浏览:846
chrome的缓存文件夹 发布:2025-03-11 03:35:49 浏览:767
u3dandroid 发布:2025-03-11 03:22:41 浏览:357
ftp如何在网站上显示图片 发布:2025-03-11 03:17:41 浏览:931
不懂加工怎么看数控车床配置 发布:2025-03-11 02:54:33 浏览:597
埋点系统存储方案 发布:2025-03-11 02:41:20 浏览:443