int array[] = {-1, 4, -2, 5, -5, 2, -20, 6};
Если бы я имел этот массив, моя реализация алгоритма Kadane найти максимальный подмассив работы:Kadane Алгоритм отрицательных числа
int max_so_far = INT_MIN;
int max_ending_here = 0;
for (int i = 0; i < size; i++) {
max_ending_here = max(max_ending_here + array[i], 0);
max_so_far = max(max_ending_here, max_so_far);
}
printf("%d\n", max_so_far);
Однако, если у меня есть массив всех негативов:
int array[]= {-10, -10, -10};
Это не сработает, он должен вернуться -10, но я получаю 0.
Как я могу заставить его работать для отрицательного числа тоже?
Спасибо!
Может быть, вы можете расширить почему/как это решение будет работать, и, пожалуйста, комментарий ваш код. –
Прежде всего, вы должны проверить, что массив пуст или null.Установите значение max_ending_here для первого числа значения массива. Затем зациклируйте начало массива со второго номера массива. Если вы выберете max (max_ending_here + array [i], array [i]). если массив всех отрицательных чисел, выход будет наибольшим отрицательным числом. – flmAtVancl