Задача — вычислить префиксную сумму матрицы или двумерного массива с помощью Python. Префиксная сумма матрицы – это новая матрица, каждый элемент которой представляет собой сумму всех элементов подматрицы, образованной верхним левым углом и текущим элементом.
Вот один из способов вычисления префиксной суммы матрицы:
Метод 1: наивный подход
- Создайте новую матрицу того же размера, что и входная матрица, инициализированную нулями.
- Пройти по каждой строке и столбцу входной матрицы.
- Для каждого элемента входной матрицы вычислите сумму всех элементов подматрицы, образованной верхним левым углом и текущим элементом.
- Обновить соответствующий элемент в новой матрице, указав вычисленную сумму.
- Вернуть новую матрицу как сумму префикса входной матрицы.
Вот реализация описанного выше метода на Python:
def prefix_sum_matrix(matrix):
rows = len(matrix)
cols = len(matrix[0])
# Create a new matrix initialized with zeros
prefix_sum = [[0] * cols for _ in range(rows)]
# Compute prefix sum
for i in range(rows):
for j in range(cols):
# Calculate sum of elements in the submatrix
prefix_sum[i][j] = matrix[i][j]
if i > 0:
prefix_sum[i][j] += prefix_sum[i - 1][j]
if j > 0:
prefix_sum[i][j] += prefix_sum[i][j - 1]
if i > 0 and j > 0:
prefix_sum[i][j] -= prefix_sum[i - 1][j - 1]
return prefix_sum
# Example usage
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
result = prefix_sum_matrix(matrix)
print(result)
Это выведет:
[[1, 3, 6],
[5, 12, 21],
[12, 27, 45]]