2015-11-02 2 views
0

Я очень новичок в этом и должен сделать это для проекта, поэтому имейте это в виду.Сумма диагонали массива

Мне нужно написать функцию sumOfDiagonal, которая имеет один параметр списка типов.

Список представляет собой двумерный массив из 4x4 целых чисел (4 строки и 4 столбца целых чисел).

Функция должна возвращать сумму целых чисел в диагональных положениях сверху справа налево.

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

+1

В какой среде/языке? –

ответ

2

Поскольку вы не указали язык (и это, вероятно, классная работа), мне придется предоставить псевдокод. Учитывая массив 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 является идеальным языком псевдо-кода, если вы хотите, чтобы иметь возможность проверить свой псевдо-код, если вы держаться подальше от своих более сложных углов :-)

+0

спасибо, что это python 3. полностью забыл упомянуть/tag как python3 – lxarmx