java实现打印魔方矩阵(附完整源码)
时间: 2023-11-11 21:03:24 浏览: 37
下面是Java实现打印魔方矩阵的示例代码:
```java
public class MagicSquare {
public static void printMagicSquare(int n) {
int[][] square = new int[n][n];
int row = n - 1;
int col = n / 2;
for (int i = 1; i <= n * n; i++) {
square[row][col] = i;
row = (row + 1) % n;
col = (col + 1) % n;
if (square[row][col] != 0) {
row = (row - 1 + n) % n;
col = (col - 2 + n) % n;
}
}
int digits = Integer.toString(n * n).length();
String format = "%" + digits + "d ";
for (int[] rowArr : square) {
for (int num : rowArr) {
System.out.printf(format, num);
}
System.out.println();
}
}
public static void main(String[] args) {
printMagicSquare(5);
}
}
```
上述代码使用了魔方阵算法,从第一行中间列开始,按如下规则填充矩阵:
1. 将1填入第一行中间列。
2. 每次将数字填入右上方,如果右上方已有数字,则填入下方。
3. 如果当前位置已有数字,则将数字填入左下方。
最终输出填充后的矩阵即可。为了输出对齐,需要根据矩阵中最大数字的位数来设置输出格式。