在Python中寻找行和列持有后面行和列求和的矩阵
假设我们有一个给定的矩阵,我们必须找到一个新的矩阵res,其尺寸与给定的矩阵相同,其中res [i,j]中的每个元素=矩阵[r,c]元素的总和对于每个r≤i和c≤j。
所以,如果输入如下
8 | 2 |
---|---|
7 | 4 |
那么输出将是
8 | 10 |
---|---|
15 | 21 |
为了解决这个问题,我们将按照以下步骤操作:
- 如果矩阵为空,则
- 返回矩阵
- R:=矩阵的行数
-
C:=矩阵的列数
-
对于r在范围1到R – 1中,执行
- 对于c在范围0到C – 1中,执行
- matrix [r,c]:=matrix [r,c] + matrix [r-1,c]
- 对于c在范围0到C – 1中,执行
- 对于r在范围0到R – 1中,执行
- 对于c在范围1到C – 1中,执行
- matrix [r,c]:=matrix [r,c] + matrix [r,c-1]
- 对于c在范围1到C – 1中,执行
- 返回矩阵
示例
让我们看以下实现以更好地理解
def solve(matrix):
if not matrix:
return matrix
R, C = len(matrix), len(matrix[0])
for r in range(1, R):
for c in range(C):
matrix[r][c] += matrix[r - 1][c]
for r in range(R):
for c in range(1, C):
matrix[r][c] += matrix[r][c - 1]
return matrix
matrix = [
[8, 2],
[7, 4]
]
print(solve(matrix))
输入
[[8,2],[7,4]]
输出
[[8,10],[15,21]]