需要数据结构来支持矩阵运算

时间:2013-05-27 21:43:19

标签: algorithm matrix

我需要一个特定的数据结构,我不确定应该使用什么。

我有一个矩阵NxN。每个单元格都有一些整数值。对于矩阵中的任何矩形,我需要计算“价格”,以便:

price = sum( #value_of_field * #distance_from_target ) over cells in rectangle

距离是曼哈顿距离,目标可以是矩形中的任何单元格。矩阵是固定的(不变)。

示例:

1 2
1 2

左上角为[0; 0],左下角为[0; 1],右上角为[1; 0],右下角为[1; 1]

例如,在矩形[0; 0] - [1; 1](整个矩阵)中给定[0; 0],价格将为:

price = 1 * 0        +      2 * 1       +    1 * 1         +        2 * 2    =  7
        price of           price of           
        [0;0] *            [1;0] *           .....                   ....
        distance           distance
        from [0;0]         from [0;0]

我该如何解决这个问题? m x n(其中m,n是矩形的维数)的解决方案很容易,但它会变慢。如何加快速度(例如,预先计算某些东西)?

1 个答案:

答案 0 :(得分:1)

提前计算Ai和Bi:

  • Ai =第i行的元素总和
  • Bi =第i列
  • 上的元素总和

formula

这会给你答案。

每次价格计算的时间复杂度为O(N)。准备Ai和Bi的时间复杂度也是O(N)