奇数阶矩阵,横竖斜加起来都相等算法(罗伯法幻方)

奇数阶矩阵,横竖斜加起来都相等:给定奇数N,形成N阶矩阵,使得横竖斜加起来都相等。比如N=3:08 01 0603 05 0704 09 02每一行,每一列,交叉斜加起来都等于15算法思路分析过程:一、暴力解法:循环+递归实现全排列组合。此法思路简单,网上不少代码实现的,但是缺点也是很明显的,暴力愚蠢耗资源。二、排列加上数学分析:1、∵横竖斜之和全相等,∴每行每列之和=...
摘要由CSDN通过智能技术生成

奇数阶矩阵,横竖斜加起来都相等:


给定奇数N,形成N阶矩阵,使得横竖斜加起来都相等。比如N=3:
08 01 06
03 05 07
04 09 02
每一行,每一列,交叉斜加起来都等于15

算法思路分析过程:


一、暴力解法:循环+递归实现全排列组合。此法思路简单,网上不少代码实现的,但是缺点也是很明显的,暴力愚蠢耗资源。

二、排列加上数学分析:
1、∵横竖斜之和全相等,∴每行每列之和=全数字之和/n。如果n=3,和=(1+2+3+……+9)/3=45/3=15。
2、又∵横竖斜之和全相等,推测出中心位置(x=n/2,y=n/2)的数字,为1-N^2的中心数字。比如N=3,坐标(1,1)位置的数字最可能是5。

三、罗伯法幻方(正解)
  幻方是一种广为流传的数学游戏,据说早在大禹治水时就发现过。幻方的特点是:由自然数构成n×n正方形阵列,称为n阶幻方,每一行、每一列、两对角线上的数之和相等。法国人罗伯总结出了构造奇数阶连续自然数幻方的简单易行的方法“罗伯法”。下表就是一个用罗伯法排好的5阶幻方。
  罗伯法的具体方法如下:
  把1(或最小的数)放在第一行正中;
  按以下规律排列剩下的n2-1个数:
  1)每一个数放在前一个数的右上一格;
  2)如果这个数所要放的格已经超出了顶行

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值