魔法矩阵
魔法矩阵的规律:
1.将1放在第一行中间一列
2.从2开始直到N*N为止各数一次按下列规则存放:每一个数存放的
行比前一个数的行数减1,列数加1
3.如果上一个数的行数为1,则下一个行数为N,列数加1;
如果上一个数的列数为N时,下一个列数为1,行数减1
4.如果按上面的规则确实的位置上已有数,或上一个数是第一行第
N列时,则把下一个数在上一个数的下面
代码实现:
#include<stdio.h>
#define N 4
int main()
{
int i,j;
int a[N+1][N+1];
for (i=1;i<=N;i++)
for (j=1;j<=N;j++)
a[i][j] = 0; //初始化全为0
j = N/2+1;
a[1][j] = 1; //第一行中间的数为1
i = 1;
int k;
for (k=2;k<=N*N;k++) //数字从2--N*N
{
i = i-1; //行数减1
j = j+1; //列数加1
if (i<1 && j>N) //上一个数是第一行第N列时,把下一个数放在上一个数的下面
{
i = i+2;
j = j-1;
}
el