Кодинг-марафон. Задача № 6.

Гарри — почтальон. У него есть почтовый участок размером n * m (матричный / 2D-список). Каждый слот в 2D-списке представляет количество писем в этом месте.

Гарри может идти только вправо и вниз. Он начинает обход в (0, 0) и заканчивает в (n-1, m-1). n представляет высоту, а m — длину матрицы.

Письма Гарри может брать только там, где находится.

Напишите функцию, возвращающую максимальное количество писем, которое Гарри может подобрать.

Примеры

harry([[5, 2], [5, 2]]) ➞ 12
# (5+5+2)


harry([
  [1, 2, 3, 4, 5],
  [6, 7, 8, 9, 10],
  [11, 12, 13, 14, 15]
]) ➞ 72
# (1+6+11+12+13+14+15)


harry([[]]) ➞ -1

Примечание. Как вы видели в примере 3, если матрица пуста, верните -1.

Решение

def harry(po):
    n, m = len(po), len(po[0])
    if n == 0 or m == 0:
        return -1
    if n == 1 and m == 1:
        return po[0][0]
    for c in range(1, m):
        po[0][c] += po[0][c-1]
    for r in range(1, n):
        po[r][0] += po[r-1][0]
    for r in range(1, n):
        for c in range(1, m):
            po[r][c] += max(po[r-1][c], po[r][c-1])
    return po[-1][-1]
Марина

Recent Posts

7 наилучших библиотек визуализации Python на 2024 год

Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…

3 дня ago

Как преобразовать строку в байты в Python

В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…

2 недели ago

Что такое Werkzeug?

В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…

2 недели ago

Как прибавить дни, месяцы и годы к дате в Python

При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…

3 недели ago

Социальная аутентификация в приложении на Flask

В этом руководстве мы рассмотрим, как добавить социальную аутентификацию с помощью GitHub и Google в…

1 месяц ago

Проверка типов в Python

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

1 месяц ago