当前位置: 代码迷 >> C语言 >> [求助]魔方阵问题~请各位指点一下呀~
  详细解决方案

[求助]魔方阵问题~请各位指点一下呀~

热度:47   发布时间:2007-11-10 08:51:00.0
[求助]魔方阵问题~请各位指点一下呀~
一道魔方阵的程序:
#include <stdio.h>
#define NUM 6
main()
{
int magic[NUM][NUM]={0};
int i,j,value;
i=0;j=NUM/2;
magic[i][j]=1;
for(value=2;value<=NUM*NUM;value++)
{ if(magic[(i-1+NUM)%NUM][(j+1)%NUM]==0) //请帮忙说一下这句是怎么想出来的~
{ i=(i-1+NUM)%NUM;
j=(j+1)%NUM;}
else{
i=(i+1)%NUM;}
magic[i][j]=value;}
printf("\nThe magic(%d*%d) is:\n",NUM,NUM);
for(i=0;i<NUM;i++)
{ for(j=0;j<NUM;j++)
printf("%4d",magic[i][j]);
printf("\n");}
}
搜索更多相关的解决方案: 魔方  

----------------解决方案--------------------------------------------------------

你的程序用于构造奇数阶的魔方
算法你google下


----------------解决方案--------------------------------------------------------
举个例子
阶数N是奇数魔方阵
下面举例子说明以3阶魔方阵为例
第1步: 中间填 1
x 1 x
x x x
x x x
第2步:数2应向1的右上角填但是没地方了就移到右下角
x 1 x
x x x
x x 2
第3步:数3应向2的右上角填但是没地方了就移到2上一行的最左边
x 1 x
3 x x
x x 2
第4步:数4应向3的右上角填但是这个地方已经有数字1了就移到3下边
x 1 x
3 x x
4 x 2
第5步:数5向4的右上角填
x 1 x
3 5 x
4 x 2
第6步 数6向5的右上角填
x 1 6
3 5 x
4 x 2
第7步:数7应向6的右上角填但是没地方了就移到6下边
x 1 6
3 5 7
4 x 2
第8步:数8应向7的右上角填但是没地方了就移到3上边
8 1 6
3 5 7
4 x 2
第9步:数9应向8的右上角填但是没地方了就移到5下边
8 1 6
3 5 7
4 9 2

----------------解决方案--------------------------------------------------------

感谢~


----------------解决方案--------------------------------------------------------
  相关解决方案