二次幻方(Magic Square)是一种每行、列和对角线上的数字和都相等的二维数组。构造二次幻方的方法有很多种,其中最著名的是罗伯特法,又称楼梯法,其核心是在奇数阶二次幻方的首行正中列填上1,随后下标向右上方移动,若出界则进行环绕,若右上方的位置已被占据则下标下移一位,填上当前权值后自增,如此往复便能构建出所有奇数阶二次幻方。而伪罗伯特法则随意选取初始下标进行操作,这样构建出的二维数组虽然具有二次幻方的某些性质但不能算真正意义上的二次幻方,所以称之为伪二次幻方,又称为准二次幻方。由于伪二次幻方中初始下标的不确定性,导致伪二次幻方拥有与二次幻方某些不同的性质,例如伪罗伯特法可以构造所有整数阶数的伪二次幻方,而且某一阶数的伪二次幻方有很多种可能的情况等。

在了解了伪二次幻方的知识后,我们想到:有没有一种方法可以在O(1)的时间复杂度内求出以下标(i,j)为起始下标的n阶伪二次幻方记为MS中MS[a][b]的权值呢?答案是肯定的。通过观察比较,我们可以发现若以(i,j)为原点O构建平面直角坐标系的话,所有在直线y=x-m-1上的权值(包括环绕)均在整数区间[mn-n+1, mn]内,其中每条直线上的最小值在直线y=2x上(包括环绕)。所以,为了解决此问题,我们可以先用代数方法将m求出来,接着再求出直线y=x-m-1上的最小值所处的列数记为c,然后再求出直线y=x-m-1上的最小值记为k,最后通过计算b与c之间的距离再加上k来计算最终的结果。于是,我们便可得出以下程序段(C语言格式):

m=((a+b+n+n)-(i+j))%n+1; //(a,b)在y=x-m-1上

c=(j+n-m)%n+1; //c为y=x-m-1上最小值所处列数

k=n*(m-1)+1; //k为y=x-m-1上最小值

printf("%d",k+(b+n-c)%n); //k+(b+n-c)%n即为所求 公元二〇一五年四月五日

浅析伪罗伯特法所构造的任意阶数伪二次幻方中某一任意位置权值的一般求法相关推荐

  1. 【C语言指针题】编写函数实现在任意行、任意列的二维数组中寻找鞍点,行、列数均有主调函数传入。

    [代码] #include <stdio.h> #include <stdlib.h> #define M 3 #define N 4 void seek(int (*p)[N ...

  2. 数值法求解最优控制问题(四)——伪谱法

    写在前面 数值法求解最优控制问题(二)--打靶法介绍了两种不同配点思路的直接法,一种是打靶法,一种是配点法,本篇文章介绍配点法. 配点法中又包含 欧拉法: Runge-Kutta 法: Hermit- ...

  3. 机器学习练习记录(1):伪逆法、势函数、基于二次准则的H-K函数、感知器法

    伪逆法 RBF(Radial Basis Function)径向基函数神经网络的学习算法 RBF网络需要学习的参数有3个:基函数的中心ci,方差σi以及隐含层与输出层间的权值Wi,根据径向基函数中心选 ...

  4. matlab rbf函数_基于径向基函数(RBF)的无网格伪谱法与程序实现(2)——微分矩阵...

    参考资料 Gregory E. Fasshauer. Meshfree Approximation Methods with MATLAB. P.387 P401 数值实现 Matlab 2019a ...

  5. 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA)

    编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 文章目录 编译原理: Subset Construction 子集构造法(幂集构造)(NFA转DFA) 简 ...

  6. 高斯伪谱法 matlab,Gauss 高斯伪谱法求解的 ,希望对大家有用的!代码比较复杂,但是可以运行。 matlab 263万源代码下载- www.pudn.com...

    文件名称: Gauss下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Windows_Unix 文件大小: 273 KB 上传时间: 2016-08-12 下载次数: 0 提 供 者 ...

  7. 清除浮动-:after伪元素法(HTML、CSS)

    清除浮动-:after伪元素法(HTML.CSS) <!DOCTYPE html> <html lang="en"><head><meta ...

  8. Tsai笔记:GPOPS学习笔记(1)—— 高斯伪谱法的最基本优化方程求解思路(例子介绍)

    Tsai笔记:GPOPS学习笔记(1)-- 高斯伪谱法的最基本优化方程求解思路(例子介绍) Tsai三步.(第一步,基本说明.第二步,结果图显示.第三步,代码展示.) 第一步,基本说明. A.问题说明 ...

  9. 小程序执行运行过程原理_活性污泥法基本原理、净化反应过程、工艺类型和运行过程中存在的问题...

    ↑ 点击上方"表面活性剂平台"关注我们 活性污泥法实质上是天然水体自净作用的人工强化,能从污水中去除溶解态和胶体态的可生物降解有机物以及能被活性污泥吸附的悬浮固体和其他物质,具有对 ...

最新文章

  1. Laravel 底层是如何处理 HTTP 请求的?
  2. oracle 截取字段长度substr
  3. linux利用vi挂载磁盘,如何在linux环境上挂载磁盘
  4. ubuntu14.6 密码重置_已迁移
  5. 农民丰收节交易英德海奇组委会议-陈业海:功能农业大健康
  6. linux统计所有进程总共占用多少内存?
  7. centos5.5 下面 lnmp环境遇到的小问题
  8. OpenGL与EGL最简流程(十八)
  9. 三维重建_彩色图和深度图转点云文件、ply和pcd相互转换、点云合并
  10. 训练猫咪,一本书就够了
  11. 禁止edge浏览器自动更新
  12. 下载安装最新kali虚拟机及切换中文方法
  13. Excel数据计数(count)
  14. 基于django的图书商城管理系统毕业设计源码110938
  15. 浅谈几个倾斜摄影三维模型的修补软件
  16. 飞利浦Georg Jensen联名系列真无线耳机JT60重磅上市
  17. 常见端口号一览(详细)
  18. GYM 100827 A.Runes(水~)
  19. Altium Designer PCB封装库放置3D模型对齐问题的解决思路
  20. 如何使用计算机画出函数模型,函数模型

热门文章

  1. 解读最佳实践:倚天 710 ARM 芯片的 Python+AI 算力优化 | 龙蜥技术
  2. redis获取缓存对象bean时报:SerializationException: Could not read JSON: Could not resolve type
  3. 正则表达式与常用文本处理工具
  4. linux 内网共享文件夹_彻底搞定Linux局域网共享 | 薄荷开源网
  5. Git常用命令学习手册
  6. CAN工具 - ValueCAN - 基础介绍
  7. AdobeAcrobat DC pro 2019版JH教程
  8. 计算机软件硬件最核心的,计算机硬件系统最核心的是什么,计算机硬件最核心部件...
  9. STM32CubeMX 实战教程:定时器中断实验(LL 库)
  10. 基础地图-在线地图-天地图(标注)