给定矩阵3x3如何仅遍历最长的对角线?

时间:2012-08-03 21:16:37

标签: matrix 2d traversal diagonal

给定矩阵3x3如何仅遍历最长的对角线?

举个例子:

1 2 3
4 5 6
7 8 9

我想要遍历1,5,9

2 个答案:

答案 0 :(得分:2)

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

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

应该是您正在寻找的。

答案 1 :(得分:0)

创建一个函数,其中参数是:数组,没有行,没有列。因此,我们可能会收到对角线上的值。对角线存在的值是行和列索引相同的值。

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