java魔方阵_魔方阵 Java实现转载

article/2025/8/29 9:08:26

49.Algorithm Gossip:

奇数魔方阵

说明

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

a4c26d1e5885305701be709a3d33442f.png

解法

填魔术方阵的方法以奇数最为简单,第一个数字放在第一行第一列的正中央,然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示:

a4c26d1e5885305701be709a3d33442f.png

一般程序语言的阵列索引多由0开始,为了计算方便,我们利用索引1到n的部份,而在计算是向右(左)上或向下时,我们可以将索引值除以n值,如果得到余数为1就向下,否则就往右(左)上,原理很简单,看看是不是已经在同一列上绕一圈就对了。

a4c26d1e5885305701be709a3d33442f.png

#include #include

#define N 5

int main(void) {inti, j, key;int square[N+1][N+1] = {0};

i= 0;

j= (N+1) / 2;for(key = 1; key <= N*N; key++) {if((key % N) == 1)

i++;else{

i--;

j++;

}if(i == 0)

i=N;if(j >N)

j= 1;

square[i][j]=key;

}for(i = 1; i <= N; i++) {for(j = 1; j <= N; j++)

printf("-", square[i][j]);

}return 0;

}

a4c26d1e5885305701be709a3d33442f.png

50.Algorithm Gossip: 4N

魔方阵

说明

与 奇数魔术方阵 相同,在于求各行、各列与各对角线的和相等,而这次方阵的维度是4的倍数。

解法

先来看看4X4方阵的解法:

a4c26d1e5885305701be709a3d33442f.png

简单的说,就是一个从左上由1依序开始填,但遇对角线不填,另一个由左上由16开始填,但只填在对角线,再将两个合起来就是解答了;如果N大于2,则以

4X4为单位画对角线:

a4c26d1e5885305701be709a3d33442f.png

至于对角线的位置该如何判断,有两个公式,有兴趣的可以画图印证看看,如下所示:

左上至右下:j % 4 == i % 4

右上至左下:(j % 4 + i % 4) == 1

a4c26d1e5885305701be709a3d33442f.png

#include #include

#define N 8

int main(void) {inti, j;int square[N+1][N+1] = {0};for(j = 1; j <= N; j++) {for(i = 1; i <= N; i++){if(j % 4 == i % 4 || (j % 4 + i % 4) == 1)

square[i][j]= (N+1-i) * N -j + 1;elsesquare[i][j]= (i - 1) * N +j;

}

}for(i = 1; i <= N; i++) {for(j = 1; j <= N; j++)

printf("-", square[i][j]);

printf("\n");

}return 0;

}

a4c26d1e5885305701be709a3d33442f.png

51.Algorithm Gossip:

2(2N+1) 魔方阵

说明

方阵的维度整体来看是偶数,但是其实是一个奇数乘以一个偶数,例如6X6,其中6=2X3,我们也称这种方阵与单偶数方阵。

解法

如果您会解奇数魔术方阵,要解这种方阵也就不难理解,首先我们令n=2(2m+1),并将整个方阵看作是数个奇数方阵的组合,如下所示:

a4c26d1e5885305701be709a3d33442f.png

首先依序将A、B、C、D四个位置,依奇数方阵的规则填入数字,填完之后,方阵中各行的和就相同了,但列与对角线则否,此时必须在A-D与C-

B之间,作一些对应的调换,规则如下:

将A中每一列(中间列除外)的头m个元素,与D中对应位置的元素调换。

将A的中央列、中央那一格向左取m格,并与D中对应位置对调

将C中每一列的倒数m-1个元素,与B中对应的元素对调

举个实例来说,如何填6X6方阵,我们首先将之分解为奇数方阵,并填入数字,如下所示:

a4c26d1e5885305701be709a3d33442f.png

接下来进行互换的动作,互换的元素以不同颜色标示,如下:

a4c26d1e5885305701be709a3d33442f.png

由于m-1的数为0,所以在这个例子中,C-B部份并不用进行对调。

a4c26d1e5885305701be709a3d33442f.png

#include #include

#define N 6

#define SWAP(x,y) {int t; t = x; x = y; y = t;}

void magic_o(int [][N], int);void exchange(int [][N], int);int main(void) {int square[N][N] = {0};inti, j;

magic_o(square, N/2);

exchange(square, N);for(i = 0; i < N; i++) {for(j = 0; j < N; j++)

printf("-", square[i][j]);

printf("\n");

}return 0;

}void magic_o(int square[][N], intn) {intcount, row, column;

row= 0;

column= n / 2;for(count = 1; count <= n*n; count++) {

square[row][column]= count; //填A

square[row+n][column+n] = count + n*n; //填B

square[row][column+n] = count + 2*n*n; //填C

square[row+n][column] = count + 3*n*n; //填D

if(count % n == 0)

row++;else{

row= (row == 0) ? n - 1 : row - 1;

column= (column == n-1) ? 0 : column + 1;

}

}

}void exchange(int x[][N], intn) {inti, j;int m = n / 4;int m1 = m - 1;for(i = 0; i < n/2; i++) {if(i !=m) {for(j = 0; j < m; j++) //处理规则 1

SWAP(x[i][j], x[n/2+i][j]);for(j = 0; j < m1; j++) //处理规则 2

SWAP(x[i][n-1-j], x[n/2+i][n-1-j]);

}else { //处理规则 3

for(j = 1; j <= m; j++)

SWAP(x[m][j], x[n/2+m][j]);for(j = 0; j < m1; j++)

SWAP(x[m][n-1-j], x[n/2+m][n-1-j]);

}

}

}

a4c26d1e5885305701be709a3d33442f.png


http://chatgpt.dhexx.cn/article/Jo6ofp4V.shtml

相关文章

C++ 魔方阵

题目描述 题目&#xff1a;有一个nn的方阵&#xff0c;如果它一行的数字之和等于一列之和&#xff0c;并等于每条对角线的和&#xff0c;这个方阵就叫做"魔方阵"。如果满足以上要求&#xff0c;输出Yes&#xff0c;否则输出No &#xff08;有点像幻方的感觉&#xf…

C语言偶数魔方阵

魔方阵还是一个比较有难度的C代码。魔方阵分为奇数魔方阵和偶数魔方阵&#xff0c;而偶数魔方阵中又分为能被4整除的偶数魔方阵和不能被4整除的偶数魔方阵。 下面是能被4整除的偶数 (4K) 魔方阵代码&#xff1a; 在写代码之前我们要先了解能被4整除的偶数魔方阵的规则&#x…

魔方阵C++

魔方阵 概念 魔方阵&#xff0c;古代又称“纵横图”&#xff0c;是指组成元素为自然数1、2…n的平方的nn的方阵&#xff0c;其中每个元素值都不相等&#xff0c;且每行、每列以及主、副对角线上各n个元素之和都相等。阶数大于等于3。   如33的魔方阵&#xff1a;   8 1 6 …

C语言 魔方阵

文章目录 1.简介2.分类3.排列方法(1)奇数阶魔方阵(2)4M阶魔方阵(3)4M2阶魔方阵 4.代码表示(1)奇数魔方阵(2)4M阶魔方阵(3)4M2阶魔方阵 5.运行结果6完整代码(供调试) 1.简介 魔方阵&#xff0c;有时又称幻方或纵横图&#xff0c;由一组排放在正方形中的整数组成&#xff0c;其每…

输出魔方阵

输出“魔方阵”。所谓魔方阵是指这样的方阵&#xff0c;它的每一行、每一列和对角线之和均相等。例如&#xff0c;三阶魔方阵为 8 1 6 3 5 7 4 9 2 要求输出1~n^2的自然数构成的魔方阵。 魔方阵(环形数组)方法&#xff1a; 1.1方在第一行的中间 2.当前数字放在前一个数字的上一…

魔方阵的实现(三种情况)

魔方阵&#xff1a;把1到n*n排成n行n列方阵&#xff0c;使方阵中的每一行、每一列以及对角线上的数之和都相同&#xff0c;即为n阶魔方阵。 根据魔方阵的规律&#xff0c;我将它分为三种情况。 1.奇数阶魔方阵 规律&#xff1a;第一个数放在第一行的中间&#xff0c;下一个…

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

魔方阵的说明&#xff1a; 将1到n(为奇数)的数字排列在n*n的方阵上&#xff0c;且各行、各列与各对角线的和必须相同 此篇文章只讲如何编写奇数阶魔方阵 规律&#xff1a; ⑴ 将1放在第一行中间一列 ⑵ 从2开始直到nn止各数依次按下列规则存放&#xff1a; 每一个数存放的行…

魔方阵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;直齿轮是整体进入啮合整体…