分治
分解:将序列分解为left和right两部分
递归:分别对每一部分调用max_profit
合并:结果为max(left的最大收益,right的最大收益,跨界的最大收益)
def max_profit(A):
lent=len(A)
if lent<2:
return 0
mid=lent//2
A_left=A[:mid]
A_right=A[mid:]
maxleft=max_profit(A_left)
maxright=max_profit(A_right)
max_left_right=max(A_right)-min(A_left)
return max(maxleft,maxright,max_left_right)
if __name__ == "__main__":
list=[13,17,15,8,14,15,19,7,8,9]
print(list)
print(max_profit(list))