对于2D矩阵A,我们希望找到从(x1,y1)
到(x2, y2)
坐标的子矩阵之和。
我遇到了查找子矩阵总和的explanation,我可以按照解决方案的逻辑,直到他们执行以下计算的最后一部分:
sum[x2][y2] + sum[x1][y1] - sum[x1][y2] - sum[x2][y1]
这个想法是他们计算一个矩阵,其中每个点代表矩阵的总和,所有这些都参考原始的x1,y1是(0,0)。然后使用几何方法,他们得到某个子数组的总和。我不能得到的是几何部分。它是如何发挥作用的?为了完整起见,我将绘制数组。
假设我们有A:
1 2 3
4 5 6
7 8 9
例如,假设在找到矩阵总和之后我们有以下内容:
1 3 6
5 12 21
12 27 45
假设我想找到从(1,1)到(2,2)的子数组的总和,其中(0,0)是总和10的原点。然后根据公式,我们有总和
A[2][2] + A[1][1] - A[1][2] - A[2][1]
给出12 + 45 - 27 - 21 = 9。
哪个不是正确答案,28?
这个答案有问题吗?