最大子序列求和_找出最大求和子=矩形的矩阵内

bd96500e110b49cbb3cd949968f18be7.png

Given a 2-dimensional array of positive and negative integers, find the sub-rectangle with the largest sum. The sum of a rectangle is the sum of all the elements in that rectangle. In this problem the sub-rectangle with the largest sum is referred to as the maximal sub-rectangle. A sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whole array. As an example, the maximal sub-rectangle of the array:

0 -2 -7 0

9 2 -6 2

-4 1 -4 1

-1 8 0 -2

is in the lower-left-hand corner:

9 2

-4 1

-1 8

and has the sum of 15.

So given a rectangle, what will be an efficient algorithm to find the sum of the maximal sub-rectangle (15 in the above example).

解决方案

You can solve it in O(numCols*numLines^2). Consider the same problem in 1d:

Given a vector of n elements, find the maximum-sum contiguous subsequence.

Let S[i] = maximum sum contiguous subsequence that ends with element i. We have S[1] = array[1] and S[i > 1] = max(S[i - 1] + array[i], array[i]).

Notice that you don't need a vector to solve this, two variables are enough. More here.

Now, for your matrix case, compute Sum[i][j] = sum of the first i elements of column j.

Now, for each possible pair of rows in your matrix, apply the 1d algorithm to the "vector" made from the elements between the rows of your current pair.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值