您的位置:首页 > 编程语言 > Python开发

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

2015-04-07 17:29 946 查看
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


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: