Maximale Teilsumme ermitteln

DaSt

Bekanntes Mitglied
Hallo,

wir haben in der Vorlesung die Maximale Teilsumme besprochen und sollten sie nun implementieren.

Bsp.
Die M.T.S aus den Zahlen -13,25,34,12,-3,7,-87,28,-77,11 = 75 (25+34+12-3+7)

Nun hat der Prof. die "Musterlösung" online gestellt und ich verstehe nicht warum mein Code 11 als Ausgabe anstelle von 75 hat, da ich eig. exakt den gleichen code wie er habe.

Mein code:
Java:
public static void main(String[] args) {

     int arr[]={-13,25,34,12,-3,7,-87,28,-77,11};
    
     int erg=maxTeilSumme(arr,arr.length);
    
     System.out.println("Maximale Teilsumme: "+erg);
   }
  
   public static int maxTeilSumme(int arr[], int n){
    
     int maximum = -99999999;
     int erg;
    
     for(int i=0; i<n; i++){
       erg=0;
       for(int y=i; y<n; y++)
        
         erg+=arr[y];
         if(erg>maximum){
           maximum= erg;
         }
        
        
     }
    
     return maximum;
   }

Code aus der Musterlösung:
Code:
intMaxTeilsum2(int a[],int n) {
          
            inti, j, sum, max= int.MinValue;

            for(i=0; i<n; i++) {
                sum=0;
                  for(j=i; j<n; j++) {
                         sum+= a[j];
                          if(sum> max) max= sum;
                     }
            }
return max;
}

Könnt ihr mir sagen, warum mein Code nicht klappt?

Danke
 
Zuletzt bearbeitet:
X

Xyz1

Gast
Kannst du schnell erklären, was die maximale Teilsumme ist?
Und nimm doch: [code=Java][/code].
 

DaSt

Bekanntes Mitglied
Die Maximale Teilsumme ist die größte Quersumme die in einem Zahlenarray vorkommt.
Bei -5,6,5 ist die normale Quersumme ja 6 aber die M.T.S. = 11 (6+5) also die maximale Quersumme die aus den 3 Zahlen zu bilden ist.

Ich habe gerade bemerkt, dass mir in der 2ten for-Schleife die {} gefehlt haben und somit wurde das Erg. nicht richtig berechnet...

Hier der funktionierende Code

Java:
public static int maxTeilSumme(int arr[], int n) {

     int maximum = -999999999;
     int erg = 0;

     for (int i = 0; i < n; i++) {
       erg = 0;
       for (int y = i; y < n; y++) {

         erg = erg + arr[y];
         if (erg > maximum) {
           maximum = erg;

         }
       }

     }

     return maximum;
   }
 
K

kneitzel

Gast
Deine innere for-Schleife hat keine {}, daher umfasst diese nur den ersten Befehl und nicht den ganzen Block.
 
X

Xyz1

Gast
Hier der funktionierende Code

Ja ich Fauli hab nicht die öffnenden und schließenden Klammern gezählt...

Ich hab mich auch mal dran versucht, so sollte es sein:
Java:
    /**
     * @author DerWissende on 03/23/2016
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(Arrays.toString(maxPartSum(new int[]{-13, 25, 34, 12, -3, 7, -87, 28, -77, 11})));
        for (int i = maxPartSum(new int[]{-13, 25, 34, 12, -3, 7, -87, 28, -77, 11})[0]; i <= maxPartSum(new int[]{-13, 25, 34, 12, -3, 7, -87, 28, -77, 11})[1]; i++) {
            System.out.print(new int[]{-13, 25, 34, 12, -3, 7, -87, 28, -77, 11}[i] + " ");
        }
    }

Code:
[1, 5, 75]
25 34 12 -3 7

Das stimmt auch mit deiner ich nun verstehenten Erklärung überein.
 
X

Xyz1

Gast
Sry, gestern schon etwas "beschwipst" gewesen, so sein:
Java:
    /**
     * @author DerWissende on 03/24/2016
     * @param args
     */
    public static void main(String[] args) {
        int[] array = new int[]{-13, 25, 34, 12, -3, 7, -87, 28, -77, 11};
        System.out.println(Arrays.toString(array));
        int[] mps = maxPartSum(array);
        System.out.println(Arrays.toString(mps));
        for (int i = mps[0]; i <= mps[1]; i++) {
            System.out.print(array[i] + " ");
        }
    }

    private static int[] maxPartSum(int[] array) {
        // so zu implementieren wie bei dir / Prof.
    }

Code:
[-13, 25, 34, 12, -3, 7, -87, 28, -77, 11]
[1, 5, 75]
25 34 12 -3 7

Mir ist dann aufgefallen, dass der Algo n^2/2 bzw. n^2 benötigt, im Internet stand aber etwas von n+k bzw. n.

Also ist da noch Nachbesserungsbedarf. Es gibt unterschiedliche Ansaätze, das zu lösen.

Wie weit biste?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Maximale Anzahl von Konsonanten im String Java Basics - Anfänger-Themen 6
RudiRüssel maximale Anzahl von Schlüsseln in einer Hash Tabelle Java Basics - Anfänger-Themen 2
E Maximale KM-Kosten Java Basics - Anfänger-Themen 20
B substring() maximale Zeichenlänge festlegen? Java Basics - Anfänger-Themen 1
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
A Maximale zeichenanzahl im TextField? Java Basics - Anfänger-Themen 4
A Threads Minimale und maximale Anzahl. Java Basics - Anfänger-Themen 28
Q jTextArea maximale Textlänge Java Basics - Anfänger-Themen 3
G maximale Anzahl der Tage im Monat Java Basics - Anfänger-Themen 18
N Maximale Zahl in einem String Java Basics - Anfänger-Themen 8
T Methoden Maximale Ziffer von int-Wert Java Basics - Anfänger-Themen 8
B Maximale Länge eines integer Arrays ? Java Basics - Anfänger-Themen 31
M Maximale Anzahl von add-Befehlen? Java Basics - Anfänger-Themen 11
B maximale Zeichenfläche Java Basics - Anfänger-Themen 3
Q Maximale Eingabelänge eines JTextFields Java Basics - Anfänger-Themen 2
G Maximale Größe von klasse Java Basics - Anfänger-Themen 7
G JTextField Abfrage auf maximale Integergröße? Java Basics - Anfänger-Themen 17
Franky868 JTextfield maximale Zeichenanzahl Java Basics - Anfänger-Themen 1
R maximale Länge des INHALTS im JTextField Java Basics - Anfänger-Themen 2
M Maximale String länge finden? Java Basics - Anfänger-Themen 8
G Maximale Fenstergröße eines JFrame Java Basics - Anfänger-Themen 4
P Maximale Threadzahl Java Basics - Anfänger-Themen 10
G jedem while element eine maximale rechenzeit zusichern Java Basics - Anfänger-Themen 16
N maximale Anzahl Schlüssel in einem Hashtable Java Basics - Anfänger-Themen 7
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
S Bildgröße ermitteln & setSize() übergeben Java Basics - Anfänger-Themen 6
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
H Häufigkeit von Zahlen ermitteln Java Basics - Anfänger-Themen 23
H Palindrom ermitteln Java Basics - Anfänger-Themen 21
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
M Beliebtesten Film ermitteln Java Basics - Anfänger-Themen 6
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
H Bei forEach Index des Elements ermitteln Java Basics - Anfänger-Themen 17
B DHCP-Server Adresse ermitteln Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
V Erste Schritte Potenzen b^n mittels Schleife ermitteln Java Basics - Anfänger-Themen 7
B Anzahl von Stunden / Tage von zwei Datumswerten ermitteln Java Basics - Anfänger-Themen 1
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
O 2 Maximalwerte und Minimalwerte aus Array ermitteln Java Basics - Anfänger-Themen 9
L Fortschritt ermitteln Java Basics - Anfänger-Themen 18
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
N Wahrscheinlichkeiten ermitteln Java Basics - Anfänger-Themen 2
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Schwierigkeitsgrad eines Wortes mit Morsecode ermitteln Java Basics - Anfänger-Themen 18
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
G Größten und kleinsten Wert im Array ermitteln? Java Basics - Anfänger-Themen 7
G Wie kann ich diesen Wert ermitteln? Java Basics - Anfänger-Themen 4
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
S Compiler-Fehler im array Maximum ermitteln Java Basics - Anfänger-Themen 6
V Querprodukt ermitteln Java Basics - Anfänger-Themen 6
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
Joew0815 Int to string und primzahle ermitteln Java Basics - Anfänger-Themen 2
F Jalousie Positionen ermitteln Java Basics - Anfänger-Themen 4
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
C OOP Schwerpunkt eines Dreiecks ermitteln Java Basics - Anfänger-Themen 4
I Zeitraum eines Monats ermitteln und in String ausgeben Java Basics - Anfänger-Themen 1
S Datentypen Dimensionalität eines Arrays ermitteln Java Basics - Anfänger-Themen 2
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
D TreeMap: Höheren Key ermitteln und den Value liefern Java Basics - Anfänger-Themen 3
J In einem Array die größte Zahl ermitteln und Faktorisieren. Java Basics - Anfänger-Themen 5
V Array ermitteln - in Quellcode speichern Java Basics - Anfänger-Themen 15
H JEditorPane: ermitteln, ob Zeichen unterstrichen Java Basics - Anfänger-Themen 4
M Monat der letzen 12 Monate ermitteln Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
H Veränderung eines Objekts ermitteln Java Basics - Anfänger-Themen 6
S Wochentage ermitteln Java Basics - Anfänger-Themen 5
S Ermitteln und Setzen der Attribute eines Objektes Java Basics - Anfänger-Themen 6
F Den Gewinner der Tordifferenz ermitteln Java Basics - Anfänger-Themen 5
J Eltern-Fenster ermitteln Java Basics - Anfänger-Themen 2
S MP3 Spielzeit mit jid3lib ermitteln? Java Basics - Anfänger-Themen 3
M Größer der eigenen .jar ermitteln Java Basics - Anfänger-Themen 4
M Größe einer Datei via. Link ermitteln Java Basics - Anfänger-Themen 9
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
C Nächsten Montag ermitteln Java Basics - Anfänger-Themen 19
W Position in ArrayList ermitteln Java Basics - Anfänger-Themen 4
B Font Namen ermitteln Java Basics - Anfänger-Themen 7
C least significant bit einer HexMaske für Bitshift ermitteln Java Basics - Anfänger-Themen 2
B Pfad einer .jar im Programm ermitteln Java Basics - Anfänger-Themen 13
H "Index" eines Button ermitteln Java Basics - Anfänger-Themen 7
C Bereits geöffnetes Object ermitteln Java Basics - Anfänger-Themen 5
S ermitteln eines Wertes im StringArray Java Basics - Anfänger-Themen 4
D Ermitteln des kleinsten Messwertes von jedem Tag Java Basics - Anfänger-Themen 15
C Hösten Wert aus mehren Listen ermitteln Java Basics - Anfänger-Themen 2
D Input/Output Pfad richtig ermitteln Java Basics - Anfänger-Themen 12
P Dateigröße von Ordnern ermitteln Java Basics - Anfänger-Themen 8
T Enum - Key als Value ermitteln Java Basics - Anfänger-Themen 7
J den x und y Wert beim klicken der Maus ermitteln Java Basics - Anfänger-Themen 2
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
G Sekunden bis zum Ende der aktuellen Kalenderwoche ermitteln! Java Basics - Anfänger-Themen 3
F Substring mittels RegEx ermitteln/ersetzen? Java Basics - Anfänger-Themen 2
M Datentypen Generics: Exacten Typ ermitteln Java Basics - Anfänger-Themen 6
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
M Größe einer Konsole ermitteln Java Basics - Anfänger-Themen 2
c_sidi90 Größe von Dateien aus File Array ermitteln Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben