姚明的经历:编程题:N行N列魔方阵,其构成法则,要求行数相加、列数相加,对角线相加 之和相等,必须N >=3 ,N是奇数

来源:百度文库 编辑:中科新闻网 时间:2024/05/02 10:02:29
N行N列魔方阵,其构成法则:第一,阶数必须是奇数(n>3);第二,将“1”放在第一行的中间一列;第三,从“2”开始只到n*n各数依次按下里列规则存放:每一个数存放的行比前一个数的行数减1,列数加1;第四,如果上一个数的行数为 1,则下一个数的行数为n,列数加1;第五,如果上一个数的列数为n,则下一个数的列数为1,行数减1;第六,如果一个数是N的整数倍,则把下一个数放在这一个数下面。

#include <sio.h>
#define MAXSIZE 15
int magic[MAXSIZE][MAXSIZE];
int cur_i=0,cur_j=0;
main()
{int count,size=0,i,j;
while((size%2)==0)
{
printf("\nenter ODD number:");
scanf("%d",&size);
}
cur_j=(size-1)/2;
for(count=1;count<=size*size;count )
{
magic[cur_i][cur_j]=count;
if((count%size)==0)
{
cur_i =1;
continue;
}
cur_i=cur_i-1;
cur_j=cur_j 1;
if(cur_i<0)
cur_i =size;
else if(cur_j==size)
cur_j-=size;
}
for(i=0;i<size;i )
{
printf("\n");
for(j=0;j<size;j )
printf("]",magic[i][j]);
}
}

另外 这里有详细的讨论
http://dev.wl668.com/c/c/2005965601_4209299.shtml