Я пытаюсь изменить алгоритм Кадане для решения более конкретной проблемы.
def max_Sum(arr, length, k):
if length < k:
print('length of array should be greater than k')
res = 0
for i in range(0, k):
res += arr[i]
current_sum = res
for i in range(k, n):
if k == n:
for j in range(0, k-1):
res += arr[j]
current_sum = res
else:
current_sum += arr[i] - arr[i-k]
print(res, current_sum)
res = max(res, current_sum)
return res
Это код для проблемы максимального подмассива. Что я хочу сделать, так это найти максимальный подмассив с длиной не более K.
Пример: у нас есть массив A = [3, -5 1 2, -1 4, -3 1, -2], и мы хотим найти максимальный подмассив длины не более K = 9. Длина подмассива должна не ограничен в K, если есть другая длина L
В этом случае алгоритм вернет 0. Он должен вернуть 6, следуя сумме A [2: 5].