如何填写奇数宫格:
设n*n宫格的阶数是n,n是正奇数。
n*n宫格的单元格表示为cell(i, j)
i为行号,取值范围为[1, n]
j为行号,取值范围为[1, n]
cell(i, j)=k,表示单元格cell(i, j)的数为k
k= 1; //第一个填入的数是“1”
i= 1; //第一个填入的数“1”的行号是1
j= 1 + n/2; //第一个填入的数“1”的列号是1 n/2
//“/”是截除小数,只保留整数部分。
//如:n= 3, (1 + n/2)= (1 + 1)= 2
while (k n*n) //如果还没有填满n*n个数,就继续
{
cell(i, j)= k;
if (i= 1 ) //如当前的单元格的行号等于1,已经到达最高一行
{
i= n; //那么,下一个单元格的行号为n,即跳到最低一行
}
else //不然,下一个单元格的行号为当前的单元格的行号-1
{
i= i - 1; //即跳到当前的单元格的上一行
}
if (j= n) //如当前的单元格的列号等于n,已经到达最右一列
{
j= 1; //那么,下一个单元格的列号为1,即跳到最左一列
}
else //不然,下一个单元格的列号为当前的单元格的列号 1
{
j= j + 1; //即跳到当前的单元格的右一列
}
k= k + 1; //下一个要填入的数是刚填入的数的+1
}
2、4为肩,6、8为足,左7右3,戴9履1,5居中央!
每一行和列都是一到九的不重复数,解不出时就查一遍,其实很简单,也很有趣。
我有一个十分简单的方法,而且是我见过的书中未曾出现的解题方法(对奇数方阵)小朋友也可用此法做出来。现提出供大家参考。如下:
先将此方阵按其顺序排列(以九乘九方阵为例)
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27
28 29 30 31 32 33 34 35 36
37 38 39 40 41 42 43 44 45
46 47 48 49 50 51 52 53 54
55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81
按两中线(上面的数列)变两对角(要排的方阵)的方法先排出9 9-1=17个数
这样上面的数列每行都有一个数在九乘九的方阵中,每行将余下的八个数依大小顺序按行增1列减1(或行增1列增1)的方法有规律的排下去即可。我现排出来,大家可从中找出其中的规律。此规律适合任何单数方阵
(对不起, 要下班了,下午给大家)