#coding=utf-8
import math
def getCroosMaxNum(arr,low,mid,high):
leftindex=0
rightindex=0
lsum=-(math.inf)
leftsum=0
a=list(range(low,mid))
a.reverse()
b=a
for i in b:
leftsum=arr[i]+leftsum
if lsum<leftsum:
lsum=leftsum
leftindex=i
rsum=-(math.inf)
rightsum=0
c=list(range(mid,high))
d=c
for j in d:
rightsum=arr[j]+rightsum
if rsum<rightsum:
rsum=rightsum
rightindex=j
return leftindex,rightindex,lsum+rsum
def getMaxArray(arr,low,high):
#arr=arr[low:high]
if low==high:
print(arr,low,high)#[3],0,1,[4,1,2]
return low,high,arr[low]
else:
mid=int((low+high)//2)
leftlow,lefthigh,leftsum=getMaxArray(arr,low,mid)
print("splitline")
分治算法递归求最大子数组,下标,和
最新推荐文章于 2020-10-17 20:49:44 发布
本文详细探讨了如何运用分治策略实现递归求解最大子数组的下标及其和。通过分解数组,逐步找到局部最优解并合并为全局最优解,这种方法能够有效地找出数组中连续子数组的最大和。
摘要由CSDN通过智能技术生成