平方矩阵 I

题目 平方矩阵 I

image-c42c5fbd

思路分析

对于奇数:每一圈距离中心点的距离相等; 中心点 - 横纵坐标中的最大值

对于偶数:

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();
        }
    }
}

同类题型

视频讲解


项目分区导航数组 ⬅️ | 01-平方矩阵 I | ➡️ 数组中的行