算法设计与分析:3阶魔方阵

作者&投稿:成王该 (若有异议请与网页底部的电邮联系)
算法设计与分析问题:3阶魔方阵。~

如果我们将1,2,……n2按某种规则依次填入到方阵中,得到的恰好是奇次魔方阵,这个规则可以描述如下:
(1)首先将1填在方阵第一行的中间,即(1,(n+1)/2)的位置;
(2)下一个数填在上一个数的主对角线的上方,若上一个数的位置是(i,j),下一个数应填在(i1,j1),其中i1=i-1、j1=j-1。
(3)若应填写的位置下标出界,则出界的值用n 来替代;即若i-1=0,则取i1=n;若j-1=0,则取j1=n。
(4)若应填的位置虽然没有出界,但是已经填有数据的话,则应填在上一个数的下面(行加1,列不变),即取i1=i+1,j1=j。
这样循环填数,直到把n*n个数全部填入方阵中,最后得到的是一个n阶魔方阵。
main( )
{int i,j, i1,j1,x,n,t,a[100][100];
print(“input an odd number:”);
input(n);
if (n mod 2=0) {print(“input error!”); return;}
for( i=1;i<=n;i=i+1)
for(j=1;j<=n;j=j+1)
a[i][j]=0;
i=1; j=int((n+1)/2); x=1;
while (x<=n*n)
{a[i][j]=x; x=x+1; i1=i; j1=j; i=i-1; j=j-1;
if ( i=0) i=n;
if (j=0) j=n;
if ( a[i][j]0 ) { i=i1+1; j=j1;} }
for( i=1;i<=n;i=i+1)
{print(“换行符”);
for(j=1;j<=n;j=j+1)
print(a[i][j]);
}

我只想说你的算法错了,你还是去查一查魔方阵的算法吧;下面是n阶奇数魔方阵的程序,你好好看看吧:
# include
void main(){
int array[16][16];
int i, j, k, m, n;

/* 变量初始化 */
m = 1;
while(m == 1)
{
printf("请输入n(0<n<=15),n是奇数)
");
scanf("%d", &n);
/* 判断n是否是大于0小于等于15的奇数 */
if((n!=0) && (n<=15) && (n%2!=0))
{
printf("矩阵阶数是 %d
", n);
m = 0;
}
}
/* 数组赋初值为0 */
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
array[i][j] = 0;
/* 建立魔方阵 */ j = n/2 + 1;
array[1][j] = 1;
for(k=2; k<=n*n; k++)
{
i = i - 1;
j = j + 1;
if((in))
{
i = i + 2;
j = j - 1;
}
else
{
if(i < 1)
i = n;
if(j > n)
j = 1;
}
if(array[i][j] == 0)
array[i][j] = k;
else
{
i = i + 2;
j = j - 1;
array[i][j] = k;
}
}
/* 输出魔方阵 */ for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
printf("%5d", array[i][j]);
printf("
");
}
}
输入3所得到的三阶魔方阵为:





1、累加和=所有数字和/行数=(1+n2)*n2/2n=n(n2+1)/2

2、这叫幻方

3、奇数阶幻方有构造方法:

从1开始,往右斜上顺次填写。

       特殊情况:如果数字出了幻方,将该数填至行或列的另一端。

       特殊情况2: 如果要填写的格子被占了,数填在格子下方一格。

       特殊情况3: 我忘了。



如果我们将1,2,……n2按某种规则依次填入到方阵中,得到的恰好是奇次魔方阵,这个规则可以描述如下:
(1)首先将1填在方阵第一行的中间,即(1,(n+1)/2)的位置;
(2)下一个数填在上一个数的主对角线的上方,若上一个数的位置是(i,j),下一个数应填在(i1,j1),其中i1=i-1、j1=j-1。
(3)若应填写的位置下标出界,则出界的值用n 来替代;即若i-1=0,则取i1=n;若j-1=0,则取j1=n。
(4)若应填的位置虽然没有出界,但是已经填有数据的话,则应填在上一个数的下面(行加1,列不变),即取i1=i+1,j1=j。
这样循环填数,直到把n*n个数全部填入方阵中,最后得到的是一个n阶魔方阵。
main( )
{int i,j, i1,j1,x,n,t,a[100][100];
print(“input an odd number:”);
input(n);
if (n mod 2=0) {print(“input error!”); return;}
for( i=1;i<=n;i=i+1)
for(j=1;j<=n;j=j+1)
a[i][j]=0;
i=1; j=int((n+1)/2); x=1;
while (x<=n*n)
{a[i][j]=x; x=x+1; i1=i; j1=j; i=i-1; j=j-1;
if ( i=0) i=n;
if (j=0) j=n;
if ( a[i][j]<>0 ) { i=i1+1; j=j1;} }
for( i=1;i<=n;i=i+1)
{print(“换行符”);
for(j=1;j<=n;j=j+1)
print(a[i][j]);
}
}


算法设计与分析:3阶魔方阵
1、累加和=所有数字和\/行数=(1+n2)*n2\/2n=n(n2+1)\/2 2、这叫幻方 3、奇数阶幻方有构造方法:从1开始,往右斜上顺次填写。特殊情况:如果数字出了幻方,将该数填至行或列的另一端。特殊情况2: 如果要填写的格子被占了,数填在格子下方一格。特殊情况3: 我忘了。

算法设计与分析:3阶魔方阵
(1)首先将1填在方阵第一行的中间,即(1,(n+1)\/2)的位置;(2)下一个数填在上一个数的主对角线的上方,若上一个数的位置是(i,j),下一个数应填在(i1,j1),其中i1=i-1、j1=j-1。(3)若应填写的位置下标出界,则出界的值用n 来替代;即若i-1=0,则取i1=n;若j...

一阶、二阶和三阶模态分别是什么意思?
1、一阶模态是外力的激励频率与物体固有频率(第一阶)相等的时候出现的,此时物体的振动形态叫做一阶振型或主振型。一阶模态是外力的激励频率与物体固有频率相等的时候出现的,此时物体的振动形态叫做一阶振型或主振型。2、二阶模态是外力的激励频率是物体固有频率(第二阶)两倍的时候出现的,此时物...

钢结构设计经历了哪三个阶段?
第三阶段——半概率极限状态设计法 自1975年起,我国试行《钢结构设计规范》(TJ17-74),规范中采用对承载力极限状态进行多系数分析,而后用单一安全系数表达的容许应力法,表达式和传统容许应力法基本相同;但安全系数的确定是对影响结构安全的诸因素采用数理统计的方法,并结合我国工程实践的经验进行多系数...

UI设计有哪些课程内容?
1熟练掌握运营设计思路与设计流程 2活动专题页与运营长图排版规范 3字体设计方法 4运营延展物规范 阶段课程特点 不只是讲作图、讲软件,需要结合企业设计标准,进行案例分析,熟知互联网运营设计规范的同时,也能了解职场中如何体现设计价值,利用漏斗分解法、杜邦分解法等方法论培养学员从设计执行者到形成...

三阶系统的标准形式
性能指标主要是稳、快、准,三个方面。判稳本来可以通过直接求“闭环传函”的极点来实现。考虑不添加零点前的二阶系统,wn^2=3,2*阻尼比*wn=2,可以得到wn=根号3,阻尼比=1\/根号3. 但是注意系统有一个比例系数是1\/3,另外附加的零点-1,会改变系统的动态性能。设计 系统的传递函数与描述其运动...

使用Design-Expert 软件进行响应面法(RSM)试验设计与分析
1、打开软件Design-Expert,设置自变量,单位及其范围,箭头所指的是设置自变量个数。2、设置目标函数和单位,箭头所指的是设置目标函数个数。3、Design-Expert软件生成的试验,按照下图完成实验,并将结果填入下表。二、结果分析 1、首先点击Analysis按钮,对线性函数,2FI模型、二阶模型、三阶模型进行显著...

头脑风暴法应用程序可分为那三个阶段?
(1) 准备阶段。CI策划与设计的负责人应事先对所议问题进行一定的研究,弄清问题的实质,找到问题的关键,设定解决问题所要达到的目标。同时选定参加会议人员,一般以5人~10人为宜,不宜太多。然后将会议的时间、地点、所要解决的问题、可供参考的资料和设想、需要达到的目标等事宜一并提前通知与会...

新编实用算法分析与程序设计图书目录
新编实用算法分析与程序设计图书目录 第1章,简介算法概念,涵盖空间复杂度和时间复杂度的探讨。1.1节介绍了基础的算法定义,1.2节详细解析空间复杂度,包括压缩存储技术与原地工作策略。时间复杂度方面,1.3.1至1.3.4分别探讨了基本运算、输入规模、输入情况以及时间复杂度的阶。1.4节重点讲解优化...

fmea的分类是怎么回事
1.将研究的系统结构化,并分成系统单元,说明各单元间的功能关系。2.从已描述的功能中导出每一系统单元的可想象的失效功能(潜在缺陷)。3.确定不同系统单元失效功能间的逻辑关系,以便能在系统FMEA中分析潜在的缺陷、缺陷后果和缺陷原因 DFMEA:在设计和制造产品时,FMEA是一种可靠性设计的重要方法。它...

安国市13047691901: 魔方阵问题算法?所谓魔方阵,是指这样的方阵,它的每一行,每一列和对角线之和均相等.例如,三阶魔方阵 8 1 6 3 5 7 4 9 2 魔方阵中各数的排列规律如下... -
鬱岚槟榔:[答案] #include #define N 16 //N可修改 int main() { int a[N][N]={0},i,j,k,p,m,n; p=1; while(p==1) { printf("Enter n(1~%d):",N-1); scanf("%d",&n); if((n!=0)&&(n

安国市13047691901: C语言 三阶魔方阵 -
鬱岚槟榔: 我只想说你的算法错了,你还是去查一查魔方阵的算法吧;下面是n阶奇数魔方阵的程序,你好好看看吧:# include <stdio.h> void main() { int array[16][16]; int i, j, k, m, n; /* 变量初始化 */ m = 1; while(m == 1) { printf("请输入n(0<n<=15),...

安国市13047691901: 魔方矩阵的介绍 -
鬱岚槟榔: 魔术矩阵是由一个n*n(n为奇数)的整数矩阵构成,矩阵中的整数值是从1~n^2[n的平方].每一行,每一列和两个对角线上数值之和是一样的.下面我以n=5的魔术矩阵为例,给出详细的说明158124171614752322201364321...

安国市13047691901: 魔方阵问题算法? -
鬱岚槟榔: #include <stdio.h> #define N 16 //N可修改 int main() { int a[N][N]={0},i,j,k,p,m,n; p=1; while(p==1) { printf("Enter n(1~%d): ",N-1); scanf("%d",&n); if((n!=0)&&(n<N)&&(n%2!=0)) p=0; } i=n+1; j=n/2+1; a[1][j]=1; for(k=2;k<=n*n;k++) { i=i-1; j=j+1; ...

安国市13047691901: 三阶魔方的各种术语及公式表示法是什么?需要魔方的简写字母表示的含义、公示、算法等,全面的魔方知识. -
鬱岚槟榔:[答案] 1,基本步骤:复原三阶魔方 三阶层先法,先复原底层十字, 完成第一层后,还原第二层,用R'U'R'U'R'URUR将右边顶层棱... 顶+ :将顶平面沿顺时针方向转动90度. 顶- :将顶平面沿顺时针方向转动90度. 顶2 :将顶平面转动180度. 3,至于魔方公式...

安国市13047691901: "魔方阵”程序的算法
鬱岚槟榔: 所谓的魔方距阵就是一种特殊的奇数阶方阵:它的行,列,对角线,上的数字之和都要相等,且方阵中的每一个数字都不相等,且数字的范围都在1到n*n之间. 我编的程序如下: #include&lt;stdio.h&gt; #define N 15 main() { int i,j,row,cloum,size,...

安国市13047691901: 用Dole Rob算法生成N阶(N为奇数)魔方阵 -
鬱岚槟榔: #include using namespace std; int main() { int n; int i,j,k; cout<cin>>n; int **a=new int*[n]; for(i=0;i a[i]=new int[n]; if(n%2==1)//奇数阶 {for(i=0;i for(j=0;j a[i][j]=0;i=0;j=n/2;k=1;a[i][j]=k;for(k=2;k<=n*n;k++){i--;j++;if(i==n-1&&j==n-1)...

安国市13047691901: 用C语言编写一个程序 输出魔方阵 -
鬱岚槟榔: #include #define n 16 //这里可以修改n的值 int main() { int a[n][n],i,j,k,p,m,n; p=1; while(p==1) /*要求阶数为1~15的商数*/ { printf("enter n(n=1~15):"); //可以输入小于等于n-1的整数 scanf("%d",&n); if((n!=0)&&(n<=n-1)&&(n%2!=0)) p=0; } for...

安国市13047691901: 描述输出“魔方阵”.所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等.例如,三阶魔方阵为8 1 63 5 74 9 2要求输出1到n的平方范围内的... -
鬱岚槟榔:[答案] #include using namespace std; #define N 40 class TSORT{ int a[N][N]; int m; public: TSORT(int x[N][N],int b){ m=b; a[N][N]=x[N][N]; } void fun(); void print(){ int i,j; for(i=1;i

安国市13047691901: matlab magic(3) -
鬱岚槟榔: 跟magic函数的算法有关.这算法是这样的:将三阶魔方的中数5填入正中央,然后其上填1,再按照向前一个数的右上角依次填数2.3.4…… 如填到顶端则移至最下 如填到最右则移至最左相应位子 如所填格子已有数则填入该数的下方空格子 你仔细看看是不是这样

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网