我无法解决的二维数组任务

Two-dimensional array task that I can't solve

最近我开始学习二维数组,最近我遇到了这些任务,这些任务为您提供 10 x 10 数组的图像,您必须重新创建它。我完成了一些任务,但其中一项任务给了我一个问题。好像我真的很亲近,但同时又不是。我已经尝试了一段时间,但我无法得到所需的答案。

  public static void main(String[] args) {
    
    int A[][] = new int [10][10];

    for (int i = 0;  i <= 9; i++) {
      for (int j=9-i, n=1; j>=1; j--) {
        if (j <= 9) {
          A[i][j] = n++;
        }
      }
    }

    for (int i=0; i<10; i++) {
      for (int j=0; j<10; j++) {
        System.out.print(A[i][j]+"\t");
      }
      System.out.println();
    }
  }
} 

感谢您的帮助!

所需的图案与主对角线对称,即对于一对 od 索引 ij 这些单元格应具有相同的内容:a[i][j] = a[j][i].

接下来,主对角线上的元素9、7、5、3、1在迭代时起始数减2,嵌套循环的“宽度”从两边递减。

因此生成的代码可能如下所示:

int A[][] = new int [10][10];

for (int i = 0; i < 10 / 2; i++) {
    for (int j = i; j < 10 - i; j++) {
        A[i][j] = A[j][i] = 9 - i - j;
    }
}

输出:

9   8   7   6   5   4   3   2   1   0   
8   7   6   5   4   3   2   1   0   0   
7   6   5   4   3   2   1   0   0   0   
6   5   4   3   2   1   0   0   0   0   
5   4   3   2   1   0   0   0   0   0   
4   3   2   1   0   0   0   0   0   0   
3   2   1   0   0   0   0   0   0   0   
2   1   0   0   0   0   0   0   0   0   
1   0   0   0   0   0   0   0   0   0   
0   0   0   0   0   0   0   0   0   0   

这是另一个版本。它从下往上填充数组。

  • 首先,从 9 循环到 0
  • 简单循环开始填充数组,方法是调整起点 k,每次循环迭代将其减少 i
int A[][] = new A[10][10];

for (int i = 9; i >= 0; i--) {
   for (int k = 9-i,z = 0; k > 0; k--) {
      A[i][z++] = k;
   }
}

for (int[] arr : A) {
    System.out.println(Arrays.toString(arr));
}

版画

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[8, 7, 6, 5, 4, 3, 2, 1, 0, 0]
[7, 6, 5, 4, 3, 2, 1, 0, 0, 0]
[6, 5, 4, 3, 2, 1, 0, 0, 0, 0]
[5, 4, 3, 2, 1, 0, 0, 0, 0, 0]
[4, 3, 2, 1, 0, 0, 0, 0, 0, 0]
[3, 2, 1, 0, 0, 0, 0, 0, 0, 0]
[2, 1, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]