Поскольку вы не указали язык (и это, вероятно, классная работа), мне придется предоставить псевдокод. Учитывая массив 4x4 2d, основная идея состоит в том, чтобы использовать цикл, определяющий индекс, и использовать этот индекс для получения правильных элементов в как размерах. Скажем, мы имели массив:
[][0] [][1] [][2] [][3]
----- ----- ----- -----
[0][] 1 2 3 4
[1][] 5 6 7 8
[2][] 9 10 11 12
[3][] 13 14 15 16
и мы хотели подвести верхний левый к нижней правой диагонали (1+6+11+16
) (1). Это было бы примерно так:
def sumOfDiagonal (arr, sz):
sum = 0
for i = 0 to sz - 1 inclusive:
sum = sum + arr[i][i]
return sum
Это обычное средство доступа к массиву. Если, как может быть задано двусмысленность в вопросе, ваш массив фактически список некоторых описаний (например, связанный список из шестнадцати элементов), вам просто нужно будет настроить, как вы получаете элементы массива.
Например, для 16-элементного списка необходимо будет получить узлы 0, 5, 10 и 15, чтобы вы могли пропустить список, пропустив четыре узла после каждого накопления.
В качестве примера, вот некоторый код (2) Python для выполнения в верхний левый донизу правый вариант, который выводит 34 (1+6+11+16)
как ожидалось:
def sumOfDiagonals(arr):
sum = 0
for i in range(len(arr)):
sum += arr[i][i]
return sum
print(sumOfDiagonals([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]))
(1) Чтобы сделать верхний правый снизу слева, просто требуется изменить второй член на sz - i - 1
.
(2) Python является идеальным языком псевдо-кода, если вы хотите, чтобы иметь возможность проверить свой псевдо-код, если вы держаться подальше от своих более сложных углов :-)
В какой среде/языке? –