Матрица хода в соседних диагоналях - PullRequest
0 голосов
/ 11 ноября 2018

Мне нужно пройти по диагонали матрицы, как в следующем примере.Я пытался адаптировать код из матрицы перемещения в диагональных полосах , но не смог.

Это матрица целых чисел: int M [n] [n];

пример для прохождения

порядок диагоналей для прохождения:

  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

2021 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 голосов
/ 12 ноября 2018

Вы можете попробовать следующий код, заменив 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");
    }
}
...