#一个数组a[0...n-1],求a[j]-a[i]+a[q]-a[p]的最大值,其中i<j<p<q
#算法解析:借鉴a[j]-a[i]的最大值,先把数组分为两段,每一段按单独算法执行,也就是先把该段
#前面一截的最小值找出,后面一截的最大值找出。然后算出最大值,同理算出第二段最大值,相加得赋值为
#max,如果更大则替换。
def getmax(array):
arrlen=len(array)-1
arraymax = [-100000] #这里赋初值时要尽可能的小,以防max-min是小于0的一些数而导致没记录。
for i in range(1,arrlen+1):
prearray=array[:i]
endarray=array[i:]
prelen=len(prearray)
endlen=len(endarray)
#每次重新循环时都会被初始化,必须在for循环外部加一个存储空间,防止最大值被初始化。
min = prearray[0]
max = endarray[0]
if max-min>arraymax[0]:
arraymax[0]=max-min
for i in range(prelen):