难点在于公式的推导。数据是离散的,要注意点的边界,遇到的时候应该在草稿纸上画大图来推导以防错误。
import copy
N, M, Q = map(int, input().split())
int_matrix = []
for i in range(N):
int_matrix.append(list(map(int, input().split())))
GPS = []
for i in range(Q):
GPS.append(list(map(int, input().split())))
L = [0 for i in range(M + 1)]
S = []
for i in range(N + 1):
S.append(copy.deepcopy(L))
for i in range(N):
for u in range(M):
S[i + 1][u + 1] = int_matrix[i][u] + S[i][u + 1] + S[i + 1][u] - S[i][u]
for i in range(len(GPS)):
x1, y1, x2, y2 = GPS[i][0], GPS[i][1], GPS[i][2], GPS[i][3]
print(S[x2][y2] + S[x1 - 1][y1 - 1] - S[x2][y1 - 1] - S[x1 - 1][y2])
L= [0](M+1)
S= [[0](M+1) for _ in range(N+1)]
这样初始化就可以避免浅拷贝问题了,而且代码简洁