Heyho!
Ich mach gerade meine Hausaufgabe und bin ein bisschen am Verzweifeln. Allgemein geht es darum, alle Möglichkeiten zu finden, ein Haus des Nikolaus zu bilden; dabei sind die Ecken so definiert:
2
/ \
1---3
| X |
0 ---4
Wir müssen das Problem per Rekursion lösen. Wir müssen die Methode 'public static int countSolutions (int pos, int linesLeft)' bearbeiten, wobei pos für die Nummer des Punktes und linesLeft angibt, wie viele Linien noch abzulaufen sind. Bisher habe ich das hier:
Bisher funktioniert das aber - unüberraschenderweise - noch nicht sonderlich gut. Ich weiß a) nicht, wie ich es schaffe, dass die eine Möglichkeit, das Haus abzulaufen dann aus dem Code gestrichen wird und b) kommt bei den solutions immer 0 raus, es sei denn, ich setzte linesLeft von Anfang an auf 0.
Ich glaube, ich hab einfach irgendeinen schwerwiegenden Denkfehler über diese wohl eigentlich einfache Aufgabe. Ich würde mich über etwaige Hilfe freuen!
Danke im Voraus!
Ich mach gerade meine Hausaufgabe und bin ein bisschen am Verzweifeln. Allgemein geht es darum, alle Möglichkeiten zu finden, ein Haus des Nikolaus zu bilden; dabei sind die Ecken so definiert:
2
/ \
1---3
| X |
0 ---4
Wir müssen das Problem per Rekursion lösen. Wir müssen die Methode 'public static int countSolutions (int pos, int linesLeft)' bearbeiten, wobei pos für die Nummer des Punktes und linesLeft angibt, wie viele Linien noch abzulaufen sind. Bisher habe ich das hier:
Java:
public static int[][] edges = {{ 0, 1, 0, 1, 1 },
{ 1, 0, 1, 1, 1 },
{ 0, 1, 0, 1, 0 },
{ 1, 1, 1, 0, 1 },
{ 1, 1, 0, 1, 0 }};
public static int countSolutions (int pos, int linesLeft) {
int solutions = 0;
if (linesLeft == 0) {
solutions = + 1;
}
else {
for (int k = 0; k < 5; k++) {
if (edges[pos][k] == 1) {
edges[pos][k] = 0;
edges[k][pos] = 0;
countSolutions(k, linesLeft - 1);
edges[pos][k] = 1;
edges[k][pos] = 0;
}
}
}
return solutions;
}
Bisher funktioniert das aber - unüberraschenderweise - noch nicht sonderlich gut. Ich weiß a) nicht, wie ich es schaffe, dass die eine Möglichkeit, das Haus abzulaufen dann aus dem Code gestrichen wird und b) kommt bei den solutions immer 0 raus, es sei denn, ich setzte linesLeft von Anfang an auf 0.
Ich glaube, ich hab einfach irgendeinen schwerwiegenden Denkfehler über diese wohl eigentlich einfache Aufgabe. Ich würde mich über etwaige Hilfe freuen!
Danke im Voraus!
Zuletzt bearbeitet von einem Moderator: