python连续乘_动态规划--求最大连续子数组的和(Python实现)&求解最大连续乘积字串(Python实现)...

def MaxSum(self,array,n):

sum=array[0]

result=array[0]

for i in range(0,n):

if sum<0:

sum=a[i]

else:

sum=sum+a[i]

start1=i

if sum>result:

result=sum

end=i

start=start1

print result,start,end

上述采用的是动态规划思想:假设sum[i]表示以第i个元素结尾的最大连续字串,那么sum[i]=max{sum[i-1]+a[i],a[i]},判断括号中的元素哪个大,就变成了判断sum[i-1]是否大于0

最大连续乘积动态规划:Max表示以a结尾的最大连续字串乘积,Min表示最小的,那么Max=Max{a[i],Max[i-1]*a[i],Min[i-1]*a[i]}Min=Min,因为最大最小可能只是符号造成的。

def MaxMulti(self,array,n):

maxA=[]

minA=[]

maxA[0]=minA[0]=array[0]

value=maxA[0]

for i in range(0,n):

maxA[i]=max(a[i],maxA[i-1]*a[i],minA[i-1]*a[i])

minA[i]=min(a[i],maxA[i-1]*a[i],minA[i-1]*a[i])

value=max(value,maxA[i])

print value

原文:http://www.cnblogs.com/pannyvan/p/4398878.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值