Hi 🙂 !
Ich soll als Hausaufgabe einen rekursiven Algorithmus zur zweidimensionalen Wegfindung programmieren. Das Array soll im Test so Aussehen
char [][] map = {
{'#', '#', '#', '#', '#'},
{'#', 'S', '#', ' ', ' '},
{'#', ' ', ' ', ' ', '#'},
{'#', ' ', '#', ' ', '#'},
{'#', '#', '#', 'X', '#'}};
S = Startpunkt
# = Wand
. = besucht
X = Ziel
Mein Programm sagt mir, dass kein Weg gefunden werden kann.
Wo ist der Fehler?
Wäre schön wenn mir jemand helfen könnte 🙂
Ich soll als Hausaufgabe einen rekursiven Algorithmus zur zweidimensionalen Wegfindung programmieren. Das Array soll im Test so Aussehen
char [][] map = {
{'#', '#', '#', '#', '#'},
{'#', 'S', '#', ' ', ' '},
{'#', ' ', ' ', ' ', '#'},
{'#', ' ', '#', ' ', '#'},
{'#', '#', '#', 'X', '#'}};
S = Startpunkt
# = Wand
. = besucht
X = Ziel
Mein Programm sagt mir, dass kein Weg gefunden werden kann.
Wo ist der Fehler?
Java:
public class Pathfinder implements Simple {
privatechar[][] map;
staticinta,b,c,d;
public String searchPath(char s, char g) {
for (int i = 0; i < map.length; i++){
for (int j = 0; j < map.length; j++){
if (map[i][j] == s){
a = i;
b = j;
}
if (map[i][j] == g){
c = i;
d = j;
}
}
}
booleanend = suche(map,a,b);
if (end){
System.out.println(loesung(map));
return"Es wurde ein Weg gefunden" ;
}else{
return"kein Weg gefunden";
}
}
static String loesung (char[][] map){
String t = "";
for (int i = 0; i < map.length ; i++ ) {
for (int j = 0; j < map.length; j++){
t += map[i][j];
}
t += "\n";
}
return t;
}
publicstaticboolean suche(char [][] map, int i, int j){
int rechts = j+1;
int links = j-1;
int unten = i+1;
int oben = i-1;
if (i < 0 || i >= map.length || j < 0 || j >= map[i].length){
return false;
}
if (oben < 0 || oben >= map.length || j < 0 || j >= map.length){
return false;
}
if (unten < 0 || unten >= map.length || j < 0 || j >= map.length){
return false;
}
if (i < 0 || i >= map.length || rechts < 0 || rechts >= map.length){
return false;
}
if (i < 0 || i >= map.length || links < 0 || links >= map.length){
return false;
}
if (i == c && j ==d){ // Stelle X
return true;
}
else{
if (map[i][rechts]==' '){
map[i][rechts]= 'r';
if(suche(map,i,rechts)){
return true;
}
}
if (map[oben][j]==' '){
map[oben][j]='o';
if(suche(map,oben,j)){
return true;
}
}
if (map[unten][j]==' '){
map[unten][j]='u';
if(suche(map,unten,j)){
returntrue;
}
}
if (map[i][links]==' '){
map[i][links]='l';
if(suche(map,i,links)){
return true;
}
}
}
return false;
}
publicvoid setMap(char[][] map) {
this.map = map;
}
}
Wäre schön wenn mir jemand helfen könnte 🙂
Zuletzt bearbeitet von einem Moderator: