当前位置:首页 > 代码 > 正文

魔方问题源代码(魔方世界代码怎么用)

admin 发布:2022-12-19 21:53 142


今天给各位分享魔方问题源代码的知识,其中也会对魔方世界代码怎么用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求魔方的算法 我指的是计算机编程算法 最好有C++ 或C#的源代码

具体做法:

方法一;

/*此程序使我按照上面介绍的魔方阵的规律编写的,不过只能求奇数魔方阵,经过测试可以算到508阶*/

#define N 7

#includestdio.h

void main()

{

int a[N][N],i,j,k;

for(i=0;iN;i++) /*先处理第一行*/

for(j=0;jN;j++)

{

a[i][j]=0; /*先令所有元素都为0*/

}

j=(N-1)/2; /*判断j的位置*/

a[0][j]=1; /*将1放在第一行中间一列*/

for(k=2;k=N*N;k++) /*再从2开始处理*/

{

i=i-1; /*存放的行比前一个数的行数减1*/

j=j+1; /*存放的列比前一个数的列数加1*/

if((i0)(j==N)) /*前一个数是第一行第N列时,把下一个数放在上一个数的下面*/

{

i=i+2;

j=j-1;

}

else

{

if(i0) /*当行数减到第一行,返回到最后一行*/

i=N-1;

if(jN-1) /*当列数加到最后一行,返回到第一行*/

j=0;

}

if(a[i][j]==0) /*如果该元素为0,继续执行程序*/

a[i][j]=k;

else /*如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面*/

{

i=i+2;

j=j-1;

a[i][j]=k;

}

}

for(i=0;iN;i++) /*输出数组*/

{

for(j=0;jN;j++)

printf("%5d",a[i][j]);

printf("\n\n");

}

}

方法二:

/*这个是网友qfyzy为帮助我找错而提供的,可以算到99阶*/

#define N 7

#includestdio.h

void main()

{

int a[N][N]={0},i=0,j,k; /*先令所有元素都为0*/

j=(N-1)/2;

i=0;

for(k=1;k=N*N;) /*开始处理*/

{

if((i0)(j==N)) /*前一个数是第一行第N列时,把下一个数放在上一个数的下面*/

{

i=i+2;

j=j-1;

}

else if(i0) /*当行数减到第一行,返回到最后一行*/

i=N-1;

else if(jN-1) /*当列数加到最后一行,返回到第一行*/

j=0;

else if(!a[i][j]){ /*如果该元素为0,继续执行程序*/

a[i][j]=k++;

i=i-1;

j=j+1;

}

else /*如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面*/

{

i=i+2;

j=j-1;

}

}

for(i=0;iN;i++) /*输出数组*/

{

for(j=0;jN;j++)

printf("%5d",a[i][j]);

printf("\n\n");

}

}

求大神!!用matlab编写 魔方阵的函数 ,或者matlab中magic函数的源代码

magic()魔方阵的函数 。代码见附件。

在命令窗口下,输入

M = magic(5)    %5阶魔方阵

M =

  17    24     1     8    15

  23     5     7    14    16

   4     6    13    20    22

  10    12    19    21     3

  11    18    25     2     9

关于C语言编奇数阶魔方阵的问题

改动处

L10:j=(n/2)+1; n的中间元素是(n/2)+1,但是在数组当中的位置应该是(n/2) //别忘了位置0存第一个

L18,L20 不等号这里不能取等

L32: 输出格式改了一下,为了好看而已

改后程序

#include"stdio.h"

void main()

{

int a[15][15]={0};

int n,i,j,k,p,q;

printf("请输入魔方阵的阶(仅限奇数阶)\n");

scanf("%d",n);

i=0;

j=(n/2);

a[i][j]=1;

for(k=2;k=n*n;k++)

{

p=i;

q=j;

i--;

j++;

if(i0)

i=n-1;

if(jn-1)

j=0;

if(a[i][j]!=0)

{

i=p+1;

j=q;

}

a[i][j]=k;

}

for(i=0;in;i++)

{

for(j=0;jn;j++)

printf(" %3d ",a[i][j]);

printf("\n");

}

}

魔方问题源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于魔方世界代码怎么用、魔方问题源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/26197.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载