在数字网格中找到具有最大角点总和的矩形

时间:2014-12-05 16:46:34

标签: algorithm optimization

给定宽度为width且高度为height的矩形网格,矩形由四个自然数leftright定义, topbottom,满足:

  • left < righttop < bottom;
  • 范围left; 中的
  • right[1, width] 范围top中的
  • bottom[1, height]

矩形的角落是坐标(left, top)(right, top)(left, bottom)(right, bottom)处网格的位置。

给定矩形的整数网格,矩形的是矩形角上网格中数字的总和。有一个有效的算法,给定这样的网格,找到一个具有最大值的矩形?如有必要,我们可以约束网格中的数字范围。

蛮力算法在网格大小width * height中是二次方的,因为每对(left, top)(right, bottom)都有线性选择。但我想知道这个问题是否可以在线性,线性或类似时间内解决。

1 个答案:

答案 0 :(得分:2)

假设网格为m×n,m≤n。这是一个O(m 2 n)时间算法。对于每对行(m选择2),计算它们的元素和,并考虑结果向量的两个最大条目的总和。