魔术方阵简单的说,就是将连续整数1,2,3....,n 的数字,依特别之顺序,排在方阵里.使每一行的数,每一列的数或对角线位置的数各自相加,所得的和皆均为相同.
魔术方阵别称魔术方阵,是一种已流传千年的数字排列,不管是中西方对这奇妙的阵列都有所研究.
对平面魔方的构造,分为三种情况:N为奇数、N为4的倍数、N为其它偶数(4n+2的形式)
N 为奇数时,最简单
(1) 将1放在第一行中间一列;
(2) 从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1
(3) 如果行列范围超出矩阵范围,则回绕。 例如1在第1行,则2应放在最下一行,列数同样加1;
(4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。
用C语言实现的代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
int main()
{
int n; //矩阵行、列数
int matrix[MAXSIZE][MAXSIZE]={0};
int i=1,j; //循环变量
int k=1;
int tmpi=0,tmpj=0;
while(1)
{
printf("请输入矩阵行数(奇数):");
scanf("%d",&n);
if((n<=0)||(n%2==0))
{
printf("请输入正确的矩阵行