编写一个魔方程序,即定义一个k行k列的二维数组(k为奇数),给数组的每个元素赋1-k*k之间的整数值,使得二维数组对应的矩阵每行元素之和等于每列元素之和,也等于对角线元素之和,显示二维数组每行元素。JAVA代码
时间: 2023-05-18 19:05:25 浏览: 90
java写的一个类似魔方的东西
```java
import java.util.Arrays;
public class MagicSquare {
public static void main(String[] args) {
int k = 5; // k为奇数
int[][] magicSquare = new int[k][k];
int row = 0, col = k / 2; // 从第一行中间位置开始填充
for (int i = 1; i <= k * k; i++) {
magicSquare[row][col] = i;
// 计算下一个位置
int nextRow = (row - 1 + k) % k;
int nextCol = (col + 1) % k;
// 如果下一个位置已经填充过了,就往下一行填充
if (magicSquare[nextRow][nextCol] != 0) {
row = (row + 1) % k;
} else {
row = nextRow;
col = nextCol;
}
}
// 输出每行元素
for (int i = 0; i < k; i++) {
System.out.println(Arrays.toString(magicSquare[i]));
}
}
}
```
输出结果:
```
[17, 24, 1, 8, 15]
[23, 5, 7, 14, 16]
[4, 6, 13, 20, 22]
[10, 12, 19, 21, 3]
[11, 18, 25, 2, 9]
```
阅读全文