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

  

 

相关文章:

  • 2021-11-22
  • 2021-08-17
  • 2022-12-23
  • 2021-08-14
  • 2021-07-04
  • 2022-12-23
  • 2021-11-20
猜你喜欢
  • 2022-01-02
  • 2022-12-23
  • 2021-08-27
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
相关资源
相似解决方案