魔法矩阵
魔法矩阵的规律:
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;
}
else
{
if (i<1)
i = N; //上一个是数的行数为1时,下一个数放在N行
if (j>N)
j = 1; //上一个数的列数为N时,下一个数放在1列
}
if (a[i][j]) //如果按上面的规律

本文介绍了魔法矩阵的定义和填充规则,并提供了C语言的代码实现,适合初级学者学习。
最低0.47元/天 解锁文章
1468

被折叠的 条评论
为什么被折叠?



