首页 文章

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

提问于
浏览
1

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

  • left < righttop < bottom ;

  • leftright 在范围 [1, width] ;

  • topbottom[1, height] 范围内 .

矩形的角是坐标为 (left, top)(right, top)(left, bottom)(right, bottom) 的网格位置 .

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

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

1 回答

  • 2

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

相关问题