R0ber1t Ответов: 1

Как напечатать все диагональные элементы 2d-вектора в C++


I'm looking for a C++ way using vector to get all the diagonals of a (square) matrix, represented as a 2d vector.

    matrix = [
    [1,2,3,4],
    [5,1,2,3],
    [9,5,1,2]]

But I have trouble coming up with a way to generate all the diagonals. The output I'm looking for is:

"[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]".


Что я уже пробовал:

Я пробовал, но могу печатать только элементы главной диагонали. Не мог бы кто-нибудь показать, как печатать все диагональные элементы.

John R. Shaw

Интересный. Но не размещайте здесь вопросы о домашней работе. Возьмите карандаш и бумагу и разберитесь.
-ИЛИ-
Я мог бы сделать слепую складку и посмотреть, смогу ли я это сделать.

Richard MacCutchan

Вам просто нужно начать с каждой соответствующей точки в Матрице и пересечь диагональ с этой точки. Итак, начиная с столбца 1, идите вниз по строкам и следуйте за каждым из них. Затем следуйте за каждым дайгоналом из столбца 2, столбца 3 ...

1 Ответов

Рейтинг:
1

CPallini

Диагональ, начинающаяся с (row,0) включает в себя все предметы (row+k,k) где k=0,1,.., ROWS-row-1.
Аналогичным образом, диагональ, начинающаяся с (0,col) включает в себя все предметы (k,col+k) где k=0, 1, .., COLS-col-1.

Задача конкурирует, если вы выполняете итерацию по строкам:

row = N-1,N-2,..,0
и колонны:
col = 1, 2, .., COLS-1