一个有符号的数组(可能包含正负数),求数组的某个区间,其和最大。
比如{-1,4,-3,4,5},其和最大区间是{4,-3,4,5},和是10。
a=[int(i) for i in input().split()]
#单纯求最大和
def max_value(a):
i = j = a[0]
for u in a[1:]:
i = max(u, i + u)
j = max(j, i)
return j
print(max_value(a))
#找出区间
def maxsum(a):
summ=0
maxs=a[0]
for i in a:
summ+=i
if summ>maxs:
maxs=summ
if summ<0:
summ=0
return maxs
c=maxsum(a)
def maxsum(a):
summ,maxs=0,a[0]
start=end=0
s=e=0
for i in range(len(a)):
summ+=a[i]
if summ>maxs:
maxs=summ
e=i
start=s
end=e
if summ<0:
summ=0
s=i+1
e=i+1
return maxs,a[start:end+1]
print(maxsum(a))