Алгоритм Кадана в Java

У меня есть следующая реализация алгоритма Кадана в Java. Это в основном, чтобы найти максимальную сумму непрерывной подложки.

String[] numbers = string.split(",");
                int max_so_far = 0;
                int max_ending_here = 0;
                for (int i = 0; i < numbers.length-1;i++){
                     max_ending_here = max_ending_here + Integer.parseInt(numbers[i]);
                     if (max_ending_here < 0)
                         max_ending_here = 0;
                     if (max_so_far < max_ending_here)
                          max_so_far = max_ending_here;
                }
                System.out.println(max_so_far);

Однако это не работает, если есть комбинация отрицательного и положительного числа в массиве, например, следующее:

2,3,-2,-1,10

, который должен вернуть 12 в качестве максимума. На данный момент он возвращается 5

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