Moin zusammen,
folgende Aufgabe soll gelöst werden:
"Schreiben Sie ein Programm, das eine Folge positiver und negativer ganzer Zahlen liest und darin die Teilfolge mit der größten Summe findet. Geben Sie die Anfangsposition und die Länge der Teilfolge aus".
Mein Problem: Ich verstehe nicht mal ansatzweise, was da von mir verlangt wird. Ich kapiers einfach nicht.
Selbst nach dem ich den Code der Musterlösung Stück für Stück mit dem Debugger durch bin kann ich nicht nachvollziehen, was da passiert (programmiertechnisch ja, aber die Programmlogik nein).
Ich hoffe, ihr könnt da etwas Licht ins Dunkel bringen.
Hier der Code der Musterlösung:
folgende Aufgabe soll gelöst werden:
"Schreiben Sie ein Programm, das eine Folge positiver und negativer ganzer Zahlen liest und darin die Teilfolge mit der größten Summe findet. Geben Sie die Anfangsposition und die Länge der Teilfolge aus".
Mein Problem: Ich verstehe nicht mal ansatzweise, was da von mir verlangt wird. Ich kapiers einfach nicht.
Selbst nach dem ich den Code der Musterlösung Stück für Stück mit dem Debugger durch bin kann ich nicht nachvollziehen, was da passiert (programmiertechnisch ja, aber die Programmlogik nein).
Ich hoffe, ihr könnt da etwas Licht ins Dunkel bringen.
Hier der Code der Musterlösung:
Java:
// H. Moessenboeck: Sprechen Sie Java? -- Kapitel 7, Aufgabe 5
// "Summe von Teilfolgen"
// Find the subsequence of a with the maximum sum
static void findMaxSubSequence(int[] a) {
int max = Integer.MIN_VALUE;
int pos = -1, len = 0;
for (int i = 0; i < a.length; i++) {
int sum = 0;
for (int j = i; j < a.length; j++) {
sum += a[j];
if (sum > max) {
max = sum; pos = i; len = j - i + 1;
}
}
}
System.out.println("subsequence with maximal sum: pos = "
+ pos + ", length = " + len);
}
public static void main(String args[]) {
int[] a = {3, 2, 4, -7, 5, 6, -5, 9, -7, 8, 1};
for (int i = 0; i < a.length; i++) System.out.print(" " + a[i]);
System.out.println();
findMaxSubSequence(a);
}
}
/*
Sample input:
10 2 4 -7 5 6 -5 9 -7 8 1
*/