Почтальон и сбор писем

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

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

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

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

Примечание. Если матрица пуста, верните -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]




Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: