6.7 魔方阵!横竖斜的数和相同。
//8 1 6
//3 5 7
//4 9 2
//总体上:
//以当前数的下一个数的位置的确定为目标,找出当前数的下一个数的位置的规律,来判断其位置!
//具体:
//(空间上理解为一个卷起来的球!)
//情况1,一般情况下(即不在第一行,也不在最后一列),则下一个数位于当前数的上一行,下一列!
//情况2,当前数位于第一行,则下一个数的行位于最后一行,列仍为当前数的下一列;
//情况3,当前数位于最后一列,则下一个数的列位于第一列;行仍为当前数的上一行;
//情况4,根据一般情况下的规律而判断的位置上已经有数,则下一位数放在当前数的下面!
#include<stdio.h>
#define n 3
int main()
{
int a[100][100] = { 0 };
int prerow, precol, row=0, col=n/2; a[row][col] = 1;
for (int i = 2; i <= n*n; i++)
{
//下一位数的的行和列的变化规律!
row--;
col++;
//根据下一位数行和列变化后的情况确定位置!
if (row < 0)//第0行的下一个数的位置!
row = n - 1;
if (row >= n)//最后1列的下一个数的位置!
col = 0;
if (a[row][col] != 0)//已有数!
{
row = prerow + 1;
col = precol;
}
a[row][col] = i;//处理好行列位置后赋值
prerow = row;
precol = col;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
printf("%-4d", a[i][j]);
printf("\n");
}
return 0;
}
6.7 魔方阵
最新推荐文章于 2024-10-13 22:25:31 发布