Матрица перемещения в диагональных полосах

Я думал, что у этой проблемы есть тривиальное решение, пара циклов for и несколько причудливых счетчиков, но, видимо, это несколько сложнее.

Итак, мой вопрос, как бы вы написали (в C) функцию обхода квадратной матрицы в диагональных полосах.

Пример:

1  2  3
4  5  6
7  8  9

Должен быть пройден в следующем порядке:

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

Каждая полоса сверху заключена в квадратные скобки. Одним из требований является возможность различать полосы. Это означает, что вы знаете, когда начинаете новую полосу. Это потому, что есть еще одна функция, которую я должен вызывать для каждого элемента в полосе, а затем перед началом новой полосы. Таким образом, решение без дублирования кода является идеальным.

Ответы на вопрос(16)

Ваш ответ на вопрос