Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!

import random
rnd = random.Random()
INF = 1000000
def get_max_subarray(arr):
best_sum = -INF
cur_sum = 0
left, right = 0,0
while right < len(arr):
new_el = arr[right]
cur_sum = cur_sum + new_el
if cur_sum > best_sum: # update best sum.
best_sum = cur_sum
(best_left, best_right) = (left , right)
if new_el < 0: # worst than best. restart
cur_sum = 0
left = right + 1
right += 1 #next
return (best_left, best_right, best_sum)
#example
x = [ rnd.randint(-100000, 100000) for _ in range(0,200) ]
#print x
y = get_max_subarray(x)
print y
if new_el < 0: # worst than best. restart if new_el < 0 and cur_sum < best_sum: # worst than best. restart def max_subarray(A):
max_so_far = max_ending_here = 0
for x in A:
max_ending_here = max(0, max_ending_here + x)
max_so_far = max(max_so_far, max_ending_here)
return max_so_far
Проблема «maximum-subarray» на примере курса доллара