Я очень новичок в кодировании, поэтому, пожалуйста, потерпите меня.
Допустим, у меня есть 2d список M = [[3, 0, 2, 18],[-1, 1, 3, 4],[-2, -3, 18, 7]]
означает символизировать матрицу
[3, 0, 2, 18]
[-1, 1, 3, 4]
[-2, -3, 18, 7]
Я бы хотелнайти скомпилированное значение (CV) каждого элемента, добавив значения, добавив значения справа и снизу от элемента к этому элементу
, например,
CV [2,3]дает мне 7 + 0 + 0 = 7, поскольку справа и снизу нет элементов
CV [1,3] дает мне 4 + 7 + 0 = 11, поскольку справа от нее нет ячейки
CV [2,2] дает мне 18 + 0 + 7 = 25
CV [1,2] дает мне 1 + 25 + 11 = 39
решенная матрица будетбыть
[216, 132, 70, 29]
[81, 62, 39, 11]
[20, 22, 25, 7]
Как бы узнать CV [0,0]?Мне удалось узнать резюме основного ряда, но после этого он становится слишком грязным.Есть лучший способ сделать это?Я ищу итеративный и рекурсивный способ.Спасибо!
def cv_iterative(m):
#first row
matrixnew = []
total = 0
base = reversed(m[len(m) - 1])
baseresult = (list(accumulate(base)))
basenew = []
for i in baseresult:
basenew.append(i)
basenew = reversed(basenew)
matrixnew.append(list(basenew))```
[1]: https://i.stack.imgur.com/sjIk2.png