public class SolveMaze {
public static boolean solveMaze(char[][] maze, int startX, int startY) {
if (startX < 0 || startX >= maze.length || startY < 0 || startY >= maze[0].length) {
return false;
}
if (maze[startX][startY] == 'E') {
return true;
}
if (maze[startX][startY] != ' ') {
return false;
}
maze[startX][startY] = '#';
boolean foundExit = solveMaze(maze, startX - 1, startY) || solveMaze(maze, startX + 1, startY) || solveMaze(maze, startX, startY - 1) || solveMaze(maze, startX, startY + 1);
maze[startX][startY] = ' ';
return foundExit;
}
}
char[][] maze = {
{'#', '#', '#', '#', '#'},
{'#', 'E', ' ', ' ', ' '},
{'#', ' ', ' ', ' ', '#'},
{'#', ' ', ' ', ' ', '#'},
{'#', '#', '#', '#', '#'}
};
System.out.println(SolveMaze.solveMaze(maze, 1, 4));