输入奇数n,形成n*n阶方阵。要求在这个方阵中填入1到n的平方的数,使得方阵的每行的和、每列的和及两条对角线的和都相等。
输入格式:
输入奇数n
输出格式:
输出该九宫格,每个数占用4个字符位置,左对齐排列。
格式提示:System.out.printf("%-4d",x);
算法提示:1、第一行的中间填1;
2、后续数字位置的确定:在当前数字的右上角;如果超出边界,则循环到另一边;如果确定好的后续位置已经有值,则当前位置的下面就是后续位置。输入样例:
3输出样例:
8 1 6 3 5 7 4 9 2
import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] arrey = new int[n][n];
int i, j, k;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
arrey[i][j] = 0;
}
}
i = 0;
j = n/2;
arrey[i][j] = 1;
for(k = 2; k <= n*n; k++){
i = i - 1;
j = j + 1;
if((i < 0) && (j == n))
{
i = i + 2;
j = j - 1;
}
else{
if(i < 0) i = n - 1;
if(j == n) j = 0;
}
if(arrey[i][j] == 0){
arrey[i][j] = k;
}
else{
i = i + 2;
j = j -1;
arrey[i][j] = k;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
System.out.printf("%-4d",arrey[i][j]);
System.out.printf("\n");
}
}
}
该博客介绍了一个算法问题,即如何填充一个n*n的方阵,使得每一行、每一列以及两条对角线的数字和都相等。输入为奇数n,输出为满足条件的方阵。示例给出了当n=3时的填充结果,并提供了Java代码实现,通过从中间开始填入数字并遵循特定的移动规则来确保和的相等性。

320

被折叠的 条评论
为什么被折叠?



