Kadane-Algorithmus in Java

8

Ich habe die folgende Implementierung von Kadanes Algorithmus in Java. Es ist im Grunde, die maximale Summe von zusammenhängenden Subarrays zu finden.

%Vor%

Dies funktioniert jedoch nicht, wenn eine Kombination aus einer negativen und einer positiven Zahl in einem Array vorhanden ist, zum Beispiel das Folgende:

%Vor%

Was sollte eine 12 als Maximum zurückgeben. Ab sofort gibt es 5

zurück     
aherlambang 29.08.2011, 16:36
quelle

4 Antworten

11

Ihre Algorithmusimplementierung sieht in Ordnung aus, aber Ihre Schleifenbedingung i < numbers.length-1 tut dies nicht: Sie stoppt nur 1 Sekunde vor dem Ende des Arrays. i < numbers.length sollte es tun: -)

    
rsp 29.08.2011, 16:43
quelle
4

das funktioniert für mich:

%Vor%     
Michał Šrajer 29.08.2011 16:53
quelle
1

Zur obigen Antwort von Michał Šrajer:

Zeile # 7: max_ending_here = Math.max (0, max_ending_hier + x);

sollte sein:

max_ending_here = Math.max (x, max_ending_hier + x);

... nach dem Kadane-Algorithmus hier

    
Jim Hunter 06.09.2012 03:14
quelle
0

Zu spät, aber wenn jemand es in der Zukunft braucht.

%Vor%     
Nishit 14.10.2017 06:38
quelle