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
时间: 2024-10-29 04:14:22