【问题标题】:Given a Matrix 3x3 How can I traverse through the longest diagonal only?给定一个 3x3 矩阵,我怎样才能只穿过最长的对角线?
【发布时间】:2025-12-09 12:55:01
【问题描述】:

给定一个 3x3 的矩阵,我怎样才能只遍历最长的对角线?

举个例子:

1 2 3
4 5 6
7 8 9

我要遍历1,5,9

【问题讨论】:

    标签: matrix 2d traversal diagonal


    【解决方案1】:

    假设您的矩阵是一个名为matrix 的二维数组:

    for (int i = 0; i < matrix.length; i++) {
        // do something with entry matrix[i][i]
    }
    

    应该是你要找的。​​p>

    【讨论】:

      【解决方案2】:

      创建一个函数,其中参数为:数组、行数和列数。因此,我们可能会收到对角线的持续值。对角线呈现的值是行和列索引相同的值。

      X . . . .
      . X . . . 
      . . X . .
      . . . X .
      . . . . X
      
      void diagonalPrint(int a[100][100], int noOfRows, int noOfCols)
      {
          for(int i=0; i<noOfRows && i<noOfCols ; i++)
          {
              printf("%d", a[i][i]);
          }
      }
      

      另外,要打印反向对角线,即

      . . . . . X
      . . . . X .
      . . . X . .
      . . X . . .
      . X . . . .
      X . . . . .
      void diagonalPrint(int a[100][100], int noOfRows, int noOfCols)
      {
          for(int i=0; i<noOfRows && noOfCols==0 ; i++)
          {
              printf("%d", a[i][noOfCols--]);
          }
      }
      

      【讨论】: