zoukankan      html  css  js  c++  java
  • 动态规划--求最大连续子数组的和(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
    

      

  • 相关阅读:
    vijos 1894 セチの祈り
    luogu p1378 经验之谈
    審視自己
    高斯消去法的相關拓展
    通用汇点
    重征之战
    有文化的人吟了一句诗
    2016年7月总结
    BZOJ 1026: [SCOI2009]windy数
    BZOJ 1047: [HAOI2007]理想的正方形
  • 原文地址:https://www.cnblogs.com/pannyvan/p/4398878.html
Copyright © 2011-2022 走看看