经典算法:魔方阵(奇数)

article/2025/8/29 8:56:08

魔方阵的说明:

将1到n(为奇数)的数字排列在n*n的方阵上,且各行、各列与各对角线的和必须相同

此篇文章只讲如何编写奇数阶魔方阵

规律:

⑴ 将1放在第一行中间一列

⑵ 从2开始直到n×n止各数依次按下列规则存放:

    每一个数存放的行比前一个数的行数 -1,列数 +1

⑶ 如果上一个数的行数为1,下一个数的行数应为n,即最后一行 //理解为封闭环形

⑷ 如果上一个数的列数为n,下一个数的列数应为1,即第一列 //理解为封闭环形

⑸ 如果按上面规则确定的位置上已有数,则把下一个数放在上一个数的下面

 具体填数过程:

①  1放在第一行中间

②  2放在1的上一行(即最后一行),下一列

 ③ 3放在2的上一行,下一列(即第一列)

④ 4放在3的上一行,下一列,但该位置被1占据,所以放在3(上一个数)下面

⑤ 5放在4的上一行,下一列,即最中间位置  

⑥ 6放在5的上一行,下一列

⑦ 7放在6的上一行,下一列,但该位置被4占据,所以放在6(上一个数)下面

⑧ 8放在7的上一行,下一列

⑨  9放在8的上一行,下一列

 

 算法思路:

我们定义一个二维数组arr,进行一个一个数字的填入(上一行后一列的算法

但是过程中如果下一个填入的位置有数字,我们需要进行判断

为了简便我们一开始就将arr全部初始化为0然后进行填值,后续判断

如果通过上一行后一列的下一个位置不等于0(说明有数字)那么我们就进行下一行同列的算法

上一行后一列: 环形处理  

 当前数的“行”为上一个数 行-1,加上ROW是为了防止出现负数

行: row = (row -1+ ROW) % ROW

当前数的“列”为上一个数 列+1 ,加上ROW是为了防止出现负数

列: col = (col + 1 ) % ROW

如果位置已有数字进行下一行同列:环形处理

 行:row = (row + 2) % ROW
 列:col = (col - 1 + ROW) % ROW

 最好画图理解这几句核心算法

代码示例:

#define ROW 3
int main()
{int arr[ROW][ROW] = {0};//数组初始化全是0 方便后面if语句判断arr[0][ROW/2] = 1;//1放在第一行中间int row = 0;//当前行下标int col = ROW/2;//当前列下标for (int i =2; i <=ROW*ROW; i++) //一个一个数字去填 遍历下标 不是按行列了{//上一行后一列row = (row -1+ ROW) % ROW;   //环形处理col = (col + 1) % ROW;//当前位置有数字有数字if (arr[row][col] != 0){row = (row + 2) % ROW;col = (col - 1 + ROW) % ROW;}arr[row][col] = i;}for (int i = 0; i < ROW; i++){for (int j = 0; j < ROW; j++){printf("%d ", arr[i][j]);}printf("\n");}return 0;
}

程序实现:


http://chatgpt.dhexx.cn/article/1XTxGDoT.shtml

相关文章

魔方阵1~n*n(全)--C语言

魔方阵的构造 描述&#xff1a;由n*n个数字所组成的n阶方阵&#xff0c;若具有各对角线、各横列与纵行的数字和都相等的性质&#xff0c;则称为魔方阵。 这个相等的和称为魔术数字。若填入的数字是从1到n*n&#xff0c;称此种魔方阵为n阶正规魔方阵。 如下所示为一个3阶魔方阵…

《齿轮制作》

新建一个画板&#xff0c;然后托入俩条补助线&#xff0c;选中矩形工具画矩形再用直接选择工具选择选中矩形得点然后点击鼠标托动变形。 再复制一个图层按shiftt&#xff0c;把中心点托到补助线中心&#xff0c;再用鼠标移动一个角度&#xff0c; 再按住快捷键shiftctrlaltt。…

斜齿轮设计

目录 一、 前 言 二、 工艺规程设计说明 &#xff08;一&#xff09; 工艺规程制定的目的 &#xff08;二&#xff09; 工艺规程制定的原则 &#xff08;三&#xff09; 工艺规程制定的原始资料 &#xff08;四&#xff09; 工艺规程制定的步骤 1&#xff0e;确定生产…

齿轮和代码

背景 前几天在单元楼下&#xff0c;无意间捡到一个散板的小车&#xff0c;娃说是他的 回来后&#xff0c;好好教导了一番&#xff0c;不能高空抛物 今天&#xff0c;终于有时间坐下来修下 这种小车&#xff0c;往后拉一段距离再松手&#xff0c;就会往前一阵跑老远 在儿童玩…

tinkerCAD案例:11.制作齿轮

tinkerCAD案例&#xff1a;11.制作齿轮 制作齿轮 Add a cylinder to be the main part of the gear. 添加一个圆柱体作为齿轮的主要部分。 说明 Click and drag a cylinder onto the Workplane. 单击圆柱体并将其拖动到工作平面上。 Change the cylinder dimensions to 35mm …

齿轮动力学仿真

2K-H行星齿轮传动由于具有体积小、重量轻、速比大、效率高的特点,在民用、国防工业中都得到 了广泛的应用。近年来,国内外学者对行星齿轮传动的动态特性已经进行了大量研究[1&#xff5e; 6]。但其中绝大多数研究者在进行建模和分析时不考虑间隙的影响,采用线性振动理论研究系统…

SolidWorks齿轮设计软件工具 GearTrax介绍

SolidWorks齿轮设计软件工具 GearTrax介绍 GearTrax 是一款专业强大的齿轮设计软件工具&#xff0c;可以用于创建驱动器组件的实体模型&#xff0c;从而即可更好的帮助用户创建出具有真正渐开线齿廓的正齿轮、斜齿轮、锥齿轮、蜗轮、花键等所需要的齿轮设计。插件支持SolidWork…

齿轮建模 图片及链接

齿轮参数化建模 链接: https://pan.baidu.com/s/1n-MaweXPdjXC8aaunKggpg 提取码: pjwv 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦

opengl绘制齿轮

1. 概述 高级计算机三维建模第二次小实习&#xff0c;利用opengl在提供的基础代码上绘制完整的齿轮。绘制思路如下图&#xff1a; 2. 注意事项 对 p 0 , p 7 , p 6 , p 3 p_0,p_7,p_6,p_3 p0​,p7​,p6​,p3​这四点所组成的平面采取了三角形绘制的方式&#xff0c;绘制顺序…

c语言编程齿轮模数选择,如何画齿轮,一看就懂

马上注册&#xff0c;结交更多好友&#xff0c;享用更多功能&#xff01; 您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;立即注册 x 在网上找到的&#xff0c;昨天看了一下&#xff0c;就画出来了 齿轮的画法 一、预备知识&#xff1a; 画一个M4&#xff0c;Z…

齿轮-机械原理基础

斜齿轮比直齿轮&#xff1a;传动能力强&#xff08;接触范围大&#xff09;&#xff0c;噪音小&#xff0c;转动平稳&#xff0c;制造成本相当&#xff0c;会产生轴向力。 1.斜齿圆柱齿轮在啮合时&#xff0c;啮合接触线是由短到长再到短&#xff1b;直齿轮是整体进入啮合整体…

用SW绘制渐开线直齿圆柱齿轮

用Solidworks绘制齿轮可以使用SW里面提供的标准库&#xff0c;经过笔者实测&#xff0c;发现并不是很好用&#xff1a;&#xff09;绘制齿轮大家可能仅仅是随手画一下&#xff0c;看着像齿轮就行了&#xff0c;但是如何正确规范的绘制一个渐开线圆柱齿轮&#xff0c;并能实现3D…

使用SOLIDWORKS方程式绘制渐开线齿轮

在SOLIDWORKS中&#xff0c;有时需要在参数之间建立关联&#xff0c;但这种关联却无法通过使用几何关系或常规的建模技术来实现。这时我们就可以使用方程式来建立模型中尺寸之间的数学关系。在方程式驱动的曲线中最经典的就是渐开线了&#xff0c;这也是绘制齿轮时不可或缺的线…

简单齿轮步骤

1.首先画个圆&#xff0c;填充颜色&#xff0c;然后选择移动工具&#xff0c;选择图层&#xff0c;如果没有变换控件&#xff0c;就在左上角打开显示变换控件&#xff0c;CTRLR&#xff0c;拉辅助线&#xff0c;拉到圆的中心点&#xff0c; 2.然后用矩形工具画个矩形&#xff0…

SOLIDWORKS Simulation齿轮啮合分析

齿轮的工况如下&#xff1a;一组齿轮进行咬合&#xff0c;模拟大齿轮卡死状态&#xff0c;小齿轮轴心扭矩5N.M,材料为合金钢&#xff0c;计算此状态下&#xff0c;齿轮整体的应力分布及变形分析。使用的仿真软件为SOLIDWORKS Simulation&#xff08;此次分析为设置方法指导&…

齿轮的基本知识

齿轮是应用非常广泛的传动件,用以传递动力和运动,并具有改变转速和转向的作用。依据两齿合齿轮轴线在空间的相对位置不同,常见的齿轮传动可分为下列三种形式(图9-43): (1) 圆柱齿轮传动——有于两平行之间的传动。 (2) 圆锥齿轮传动——用于两相之间的传动。 (3) 蜗杆蜗…

工程制图-齿轮

认识齿轮 轮泵工作原理很简单&#xff0c;就是一个主动轮一个从动轮&#xff0c;两个齿轮参数相同&#xff0c;在一个泵体内做旋转运动。在这个壳体内部形成类似一个“8”字形的工作区&#xff0c;齿轮的外径和两侧都与壳体紧密配合&#xff0c;传送介质从进油口进入&#xff…