poj 1050

貌似二维最大字串和

水题

先看下一维数组的最大字段和

 

 

已知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】同一维

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值