魔方矩阵,就是每行之和、每列之和和对角线之和都相等,下图是其中一种情况。
这种题我们就是找规律,可以发现将1填到第一行中间列,下一个数填到右上角(上面越界即到最下面,左右越界同理),当填到行数的整数倍时,下一个数即在此数正下方,即4在3正下方、7在6正下方,其他数全部遵循右上规律。(5阶魔方矩阵规律相同)
代码实现:
public class Test{
public static void main(String[] args){
int n = 3;//3阶魔方矩阵
int[][] array = new int[n][n];
//x表示行数,y表示列数,初始位置定到首行中间列
int x = 0;
int y = n / 2;
//1-9依次填数
for(int i = 1; i <= n * n; i++){
array[x][y] = i;
//当填到行数整数倍时,下一数在次数正下方,行数加1即可
if(i % n == 0){
x++;
} else{ //其他数遵循右上规律,即行数减1,列数加1
x--;
y++;
}
//判断行数、列数越界
if(x < 0){
x = n - 1;
}
if(y == n){
y = 0;
}
}
//输出
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
System.out.print(array[i][j] + "\t");
}
System.out.println();
}
}
}
atao is a big dog