Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Fragen zur Skyline und MensaCooking
Moin zusammen,
gerade habe ich richtig viele Probleme mit meinen Aufgaben und dazu habe ich fragen:
Erstens Skyline:
Ich bekomme immer ein StackOverflow(@109, 115, 125(ab der 125 wiederholt es sich)). Ich hab auf den Forum gelesen und viele Leute gefragt und angeblich muss bei meiner skyline am ende eine 0 stehen? Ich versteh das nicht und weiß nicht wie das eigentlich geht.
Zweitens MensaCooking:
In dieser Aufgabe bekomme ich ein Timeout 200ms. Ich glaube das Problem hier ist, das es das Long nicht speichern kann. Alle meine variablen sind schon long aber angeblich kann es kein 90449030191104000L schnell laden und braucht daher viel Zeit.
Danke nochmals,
H
P.S: Bei der RekursivenKunst benutzt man da ne Funktion zur Berechnung des neuen X Wert und Y?
Zur Skyline: Du legst einfach ein Array an, dessen Länge um 1 größer ist, als die der eigentliche Skyline. In der letzten Stelle ist eine 0 gespeichert. Mit dieser 0 muss man weniger Grenzfälle betrachten als mit der ursprünglichen Skyline.
Zu MensaCooking: Das Problem wird ganz sicher nicht daran liegen, dass man keine longs laden kann. Programmierst du auch dynamisch, d. h., verwendest du an einer Stelle auch das vorgegebene Array?
Zur rekursiven Kunst: Ja, man kann die Funktionen benutzen, die man vorher implementiert hat.
Hab das gemacht, jetzt bekomme ich ein Timeout wie beim MensaCooking.
In der MensaCooking benutze ich die Funktionen in der Aufgabe, aber ich hab das Programm auch dynamisch aufgebaut. Nur wenn ich das array wieder verwende habe ich ein arrayoutofbounds error bei test3.
Zur Skyline: Wie zerlegst du dein Array?
Zur Mensa: Da scheint dein Basisfall nicht zu stimmen. Suche am besten irgendwo im Netz (z. B. in den Vorlesungsfolien) nach einer Implementierung vom Pascal’schen Dreieck mittels dynamischer Programmierung und schau dir an, wie dort die Grenzfälle behandelt werden.
Bei der Skyline da benutze ich die divide Methode dann die conquer Methode und dann die merge Methode und rufe conquer aus am ende.
Bei der Mensa habe ich grün bei allen fällen nur bei test 6 gibt es ein StackOverflow.
Ich denke, dass du divide nicht mit den richtigen Parametern aufrufst.
divide (b,1,true) für left?
oder eher
divide (b,b.length/2,true) für left?
Probier doch beide Methoden aus und dann siehst du den Unterschied.
Bei beiden Fälle bekomme ich ein StackOverflow. Es geht nicht, diese Aufgabe bringt mich noch um!!!
Tipp: heute gleich mit den Aufgaben fuer kommenden Montag beginnen und in die Rechneruebungen gehen.