• 动态规划--求最大连续子数组的和(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
    

      

  • 相关阅读:
    Freefilesync-文件夹自动同步
    考研打卡_Day077
    考研打卡_Day076
    考研打卡_Day075
    考研打卡_Day074
    考研打卡_Day073
    考研打卡_Day072
    考研打卡_Day071
    考研打卡_Day070
    考研打卡_Day069
  • 原文地址:https://www.cnblogs.com/pannyvan/p/4398878.html
Copyright © 2020-2023  润新知