Ausgabe array getShortestPath

Benutzeravatar
^Lara^
Mausschubser
Mausschubser
Beiträge: 68
Registriert: 17. Jan 2005 12:57

Ausgabe array getShortestPath

Beitrag von ^Lara^ »

an genommen dies sind die richtigen koordinaten zum ziel:
{{3,0}, {2,1}, {1,2}, 2,3}}

wäre dieses array auch gültig??
{{3,0}, {2,1}, {1,2}, 2,3}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}}

also wenn ich vorher nicht die genaue länge des arrays kenne und es z.b. auf 10 setze, obwohl der optimale weg nur 4 felder lang ist..

meint ihr das ist in ordnung?

lg lara

Benutzeravatar
seth2k1
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 29. Sep 2006 00:53
Wohnort: Darmstadt - Eberstadt

Beitrag von seth2k1 »

ich denke nicht. aber um jeden punkt den du zusätzlich setzt kannst du dein array doch vergrößern.. brauchst halt nen temporäres array in dem du erst die vorhandenen daten auslagerst..
"Hallo, ich verkaufe diese modischen Lederjacken!"

Benutzeravatar
^Lara^
Mausschubser
Mausschubser
Beiträge: 68
Registriert: 17. Jan 2005 12:57

Beitrag von ^Lara^ »

wie genau meinst du das?
ich dachte ich müßte mit

(z.b.)
array = new int[4][2]
die länge vorher festlegen..

DANKE

Benutzeravatar
seth2k1
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 29. Sep 2006 00:53
Wohnort: Darmstadt - Eberstadt

Beitrag von seth2k1 »

int[][] temp_array = new int [array.length][2];
kopiere von array in temp array
array = new int[temp_array.length + 1][2];
kopiere zurück und schreibe an letzter stelle die neue koordinate..
"Hallo, ich verkaufe diese modischen Lederjacken!"

Notschko
Windoof-User
Windoof-User
Beiträge: 40
Registriert: 27. Nov 2005 18:00
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Notschko »

Nein! Meiner Meinung nach dürfe das nicht gültig sein,
da dies einen falschen Pfad beschreibt. Das letzte Tupel muss dein Ziel sein. Das Test-System kann nicht erkennen, ob die Platzhalter {0, 0} noch zum Pfad gehören oder nicht zu werten sind

HolgerF
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 263
Registriert: 16. Jan 2007 14:20
Kontaktdaten:

Beitrag von HolgerF »

Das ist als Rückgabe mit Sicherheit nicht gültig.
Aber du kannst das natürlich intern verwenden, wenn es für dich einfacher ist. Musst halt bloß am Ende dann ein neues Array mit der richtigen Länge erstellen, in das du dann einfach alle relevanten Teile von obigem Array kopierst.

Benutzeravatar
^Lara^
Mausschubser
Mausschubser
Beiträge: 68
Registriert: 17. Jan 2005 12:57

Beitrag von ^Lara^ »

danke.
musste es leider doch ganz anders lösen, aber für die zukunft weiß ich jetzt bescheid =)

Notschko
Windoof-User
Windoof-User
Beiträge: 40
Registriert: 27. Nov 2005 18:00
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Notschko »

An deiner Stelle würde ich ein Vector nehmen. Dort kannst du dynamisch Werte eintragen. Die Elemente dieses Vectors musst du später nur noch in ein Array kopieren. Als Array-Größe nimmst du die Vector-Größe

yourmaninamsterdam
Nerd
Nerd
Beiträge: 681
Registriert: 26. Okt 2006 14:04
Kontaktdaten:

Beitrag von yourmaninamsterdam »

Du solltest in diesem konkreten Fall auf keinen Fall Vector nehmen, sondern ArrayList. Vector ist synchronisiert und führt zu unnötigem Performanceverlust, da du wohl kaum mehrere Threads in deinem Programm benutzt.

Benutzeravatar
m0ep
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 189
Registriert: 5. Okt 2006 22:52
Wohnort: Bensheim
Kontaktdaten:

Beitrag von m0ep »

ICh benutze da lieber einen Stack. Kann man schön Koordinaten drauf legen und wieder runterschmeißen =)

Passt auch besser zu meinen Algo. als eine Liste ;)
Lasst mich Arzt, ich bin durch!

kde
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 123
Registriert: 19. Dez 2006 10:29
Kontaktdaten:

Beitrag von kde »

stack erweitert allerdings vector und ist daher langsamer als eine eigene lösung aus arraylist. am besten ist also eine subklasse von arraylist mit den operationen pop, peek und push, die kriegt man auch wunderbar in O(1) hin.

in java 6 gibt es dafür schon das wunderbare interfrace deque. aber wir sollen ja nur java 5 benutzen.

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

ich benutz einfach nur n boolean array welche felder ich benutzt habe und welche nicht und berechne den pfad einfach zum schluß aus dem bool array, geht relativ einfach, die länge lässt sich durch zählen der "true"-werte wunderbar leicht errechnen ^^

Notschko
Windoof-User
Windoof-User
Beiträge: 40
Registriert: 27. Nov 2005 18:00
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von Notschko »

Vector ist synchronisiert und führt zu unnötigem Performanceverlust,
Das musst du mir nochmal etwas genauer erklären

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

Synchronisiert heißt, du kannst einen Vektor aus verschiedenen threads raus gleichzeitig ansprechen ohne dass es probleme gibt. Das braucht halt unnötig performance wenn man nur einen thread hat und den ganzen kontrollaufwand eigentilch nicht bräuchte.

Benutzeravatar
m0ep
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 189
Registriert: 5. Okt 2006 22:52
Wohnort: Bensheim
Kontaktdaten:

Beitrag von m0ep »

Ist ein Argument ^^


Naja mein Lösung ist weg und beim ersten Versuch bestanden \o/ (zwar schon seit 14:00 aber ich hatte gerade das Mitteilungsbedürfnis danach ^^)
Lasst mich Arzt, ich bin durch!

Antworten

Zurück zu „Archiv“