blob: bbafa3f3b238ee4fd372d66bc034079e050d62a9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// N := Länge des Feldes.
// Laufzeit: O(N)
int maxStart = 1, maxLen = 0, curStart = 1, len = 0;
double maxValue = 0, sum = 0;
for (int pos = 0; pos < N; pos++) {
sum += values[pos];
len++;
if (sum > maxValue) { // Neues Maximum.
maxValue = sum; maxStart = curStart; maxLen = len;
}
if (sum < 0) { // Alles zurücksetzen.
curStart = pos +2; len = 0; sum = 0;
}
}
// maxSum := maximaler Wert, maxStart := Startposition, maxLen := Länge der Sequenz
|