通过坐标来寻找关系
前半部分可以用min(i, j)
来计算,后半部分需要转换成前半部分利用坐标来计算
例如:
-
图中的
(2, 5)
应该对应(3, 0)
,但是因为矩阵中不存储0
,所以需要用(n - i + 1, n - j + 1)
-
图中的
(3, 4)
应该对应(2, 1)
,用(n - i + 1, n - j + 1)
表示就为(3, 2)
同理上面的都可以用这种方法,因为矩阵关于对角线对称!
Java Code
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 ++) {
int x = Math.min(Math.min(i, j), Math.min(n - i + 1, n - j + 1));
System.out.printf("%d ", x);
}
System.out.printf("\n");
}
System.out.printf("\n");
n = sc.nextInt();
}
}
}