相邻对角线上的遍历矩阵

时间:2018-11-11 20:40:56

标签: c algorithm matrix traversal diagonal

我需要遍历对角线上的矩阵,如以下示例所示。 我尝试改编Traverse Matrix in Diagonal strips中的代码,但未成功。

它是一个整数矩阵:int M [n] [n];

example to traverse

对角线的遍历顺序:

  1. d(0)
  2. d(+1)
  3. d(-1)
  4. d(+2)
  5. d(-2)
  6. d(+3)
  7. d(-3) 等等

让我们举个例子:

00 01 02 03

10 11 12 13

20 21 22 23

30 31 32 33

,因此所需的输出将是:

片段1:00 11 22 33

片段2:01 12 23

片段3:10 21 32

片段4:02 13

片段5:20 31

切片6:03

片段7:30

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码,将printf替换为所需的内容。

#define N 4

int M[N][N];
//populate the array
for(int i=0; i<N; ++i)
{
    printf("slice %d:", 2*i+1);
    for(int j=0; j<N-i; ++j)
        printf(" %d", M[j][j+i]);
    printf("\n");
    if(i > 0)
    {
        printf("slice %d:", 2*i+2);
        for(int j=0; j<N-i; ++j)
            printf(" %d", M[j+i][j]);
        printf("\n");
    }
}