平方矩阵 I
题目 平方矩阵 I
思路分析
对于奇数:每一圈距离中心点的距离相等; 中心点 - 横纵坐标中的最大值
对于偶数:
a[i][j] = n / 2 - max(min(abs(i - n / 2), abs(i - (n - 1) / 2)), min(abs(j - n / 2), abs(j - (n - 1) / 2)));
比奇数多了一个判断min(abs(i - n / 2), abs(i - (n - 1) / 2))
规律是每个数等于它到上下左右四条边的距离的最小值。
代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
int n = sc.nextInt();
if (n == 0) break;
for (int i = 0; i < n; i ++ ) {
for (int j = 0; j < n; j ++ ) {
int a = Math.min(i, n - 1 - i);
int b = Math.min(j, n - 1 - j);
System.out.printf("%d ", Math.min(a, b) + 1);
}
System.out.println();
}
System.out.println();
}
}
}
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while(n != 0){
for (int i = 1; i <= n; i++ ) {
for (int j = 1; j <= n; j++) {
//拿5举例
/*
i=1 j=1 j=2 j=3 j=4 j=5 a=1 n-i+1=5 b-j+1 =5 4 3 2 1; b=5 4 3 2 1;
i=2 j=1 j=2 j=3 j=4 j=5 a=1 2 n-i+1=4 b=4 4 3 2 1;
i=3 j=1 j=2 j=3 j=4 j=5 a=1 2 3 n-i+1=3 b=3 3 3 2 1;
i=4 j=1 j=2 j=3 j=4 j=5 a=1 2 3 4 n-i+1=2 b=2 2 2 2 1;
i=5 j=1 j=2 j=3 j=4 j=5 a=1 2 3 4 5 n-i+1 =1 b=1 1 1 1 1;
min(a,b)=1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
*/
int a = Math.min(i, j), b = Math.min(n - i + 1, n - j + 1);
System.out.printf("%d ", Math.min(a, b));
}
System.out.println();
}
System.out.println();
n = sc.nextInt();
}
}
}
💬 评论