rekursion:tiefensuche:istverbundenaufgabe:loesung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
rekursion:tiefensuche:istverbundenaufgabe:loesung [2024/09/08 16:17] – Martin Pabst | rekursion:tiefensuche:istverbundenaufgabe:loesung [2024/09/08 16:31] (aktuell) – [Lösung] Martin Pabst | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Lösungsidee ====== | ||
+ | <WRAP center round tip 60%> | ||
+ | Wir geben der Methode '' | ||
+ | Interessantes Detail: Am Anfang belegen wir das Array '' | ||
+ | </ | ||
+ | |||
+ | |||
====== Lösung ====== | ====== Lösung ====== | ||
Zeile 18: | Zeile 25: | ||
| | ||
| | ||
+ | // Instanzierung und Vorbelegung des Arrays weg: | ||
int[] weg = new int[adj.length]; | int[] weg = new int[adj.length]; | ||
- | | ||
- | // Initialisiere das Array Weg mit lauter -1 - Werten: | ||
for (int i = 0; i < weg.length; i++) { | for (int i = 0; i < weg.length; i++) { | ||
| | ||
} | } | ||
+ | | ||
if(istVerbundenRekursiv(startknoten, | if(istVerbundenRekursiv(startknoten, | ||
- | + | // Ausgabe des Weges: | |
- | // Gib den Weg aus: | + | |
for (int i = adj.length - 1; i >= 0; i--) { | for (int i = adj.length - 1; i >= 0; i--) { | ||
if(weg[i] != -1) { | if(weg[i] != -1) { | ||
Zeile 36: | Zeile 41: | ||
} | } | ||
} | } | ||
- | |||
| | ||
- | |||
| | ||
- | |||
} else { | } else { | ||
| | ||
Zeile 49: | Zeile 51: | ||
boolean[] schonBesucht, | boolean[] schonBesucht, | ||
schonBesucht[startknoten] = true; | schonBesucht[startknoten] = true; | ||
- | |||
- | int wegNächsterFreierIndex = 0; | ||
- | while (weg[wegNächsterFreierIndex] != -1) { | ||
- | | ||
- | } | ||
- | |||
if(startknoten == zielknoten) { | if(startknoten == zielknoten) { | ||
- | weg[wegNächsterFreierIndex] = startknoten; | + | int i = nächsterFreierIndex(weg); |
+ | weg[i] = startknoten; | ||
| | ||
} | } | ||
Zeile 63: | Zeile 60: | ||
| | ||
if(istVerbundenRekursiv(i, | if(istVerbundenRekursiv(i, | ||
- | weg[wegNächsterFreierIndex] = startknoten; | + | int i = nächsterFreierIndex(weg); |
+ | weg[i] = startknoten; | ||
| | ||
} | } | ||
Zeile 69: | Zeile 67: | ||
} | } | ||
return false; | return false; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Suche die nächste freie Position im Array weg: | ||
+ | */ | ||
+ | | ||
+ | int i = 0; | ||
+ | while (weg[i] != -1) { | ||
+ | i++; | ||
+ | } | ||
+ | return i; | ||
} | } | ||
rekursion/tiefensuche/istverbundenaufgabe/loesung.1725812263.txt.gz · Zuletzt geändert: 2024/09/08 16:17 von Martin Pabst