典型分治思想,连续子数组必然位于以下三种情况之中:
1、完全位于A[low..mid]中,因此low <= i <= j <= mid.
2、完全位于A[mid..high]中,因此mid <= i <= j <= high.
3、跨越了中点,因此low <= i <= mid < j <= high.
求sum:
def max_child2(alist, low, high):
if low == high:
return alist[low]
mid = (low + high) // 2
m1 = max_child2(alist, low, mid)
m2 = max_child2(alist, mid+1, high)
now_left = alist[mid]
left = alist[mid]
for i in range(mid-1, low-1, -1):
now_left = now_left + alist[i]
if now_left > left:
left = now_left
now_right = alist[mid+1]
right = alist[mid+1]
for j in range(mid+2, high+1):
now_right = now_right + alist[j]
if now_right > right: