Отрицательные числа алгоритма Кадане

int array[] = {-1, 4, -2, 5, -5, 2, -20, 6};

Если бы у меня был этот массив, моя реализация алгоритма Кадане для поиска максимального подмассива работает:

  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.

Как заставить его работать и с отрицательными числами?

Спасибо!

7
задан default locale 12 April 2012 в 04:34
поделиться