要求:根据输入的数字n,如:3,5,7...以矩阵显示n行n列数,这些数由1~n*n构成,要求矩阵的每行每列及对角线上n个数之和相等
预备知识:
在距阵中,1在第一行正中,随后的数字应放到上一个数字的右上方方格中,如果向上不行,就放到该列的最下方格子;如果向右不行,就放到该行的最左边;如果都不行,就放到上一个数字的正下方;如果目标格子中已经有数字,也放到上一个数字的正下方
思路:
1) 使用2维数组预备存储1~n*n这些数字
2)
1是放到第一行正中的,所以其索引号是:[0][(n-1)/2]
3) 随后的数字,其索引号原则如下
1> num的行索引为 num-1 的
(行索引-1) , num的列索引为 num-1 的 (列索引+1)
2>如果发现num的行,列索引都越位(-1或n),则
num的行索引为
num-1 的 (行索引+1) , num的列索引为 num-1 的
(列索引)
3>如果发现num的行,列索引指向的位置已经有数字,则
num的行索引为 num-1 的 (行索引+1) , num的列索引为
num-1 的
(列索引)
4>如果发现num的行越位(-1),则
num的行索引为n-1
5>如果发现num的列越位(n),则
num的列索引为0
如下是改程