貌似二维最大字串和
水题
先看下一维数组的最大字段和
已知n个整数(可能为负整数)组成的序列a1,a2,…,an,求该序列的子段和的最大值。当所有整数均为负整数时定义其最大子段和为0。
只介绍dp算法:
b[j]是a1,a2,…,aj中以aj结尾的最大子段和。
1、证明b[j]满足最有子结构
如果b[j]是a1,a2,…,aj中以aj结尾的最大子段和,那么b[j-1]一定是a1,a2,…,a(j-1)以a(j-1)结尾的最大子段和。否则,设b’是a1,a2,…,a(j-1)以a(j-1)结尾的最大子段和,那么,b’+a[j]>b[j],矛盾。
2、推出递归表达式
若j=1,b[j]=a[1]
若j>1,b[j]=max{a[j],b[j-1]+a[j]}
下面看1050题
如果我们知道了最大矩阵的上界和下界 我们就可以转化为一维数组的最大字段和
代码如下 枚举上下界
sum【i】【j】代表第j列的前i项和
b【i】同一维