Maze Finder
Find the way through a maze with recursion.
public class MazeSolver {
private static final int PATH = 1;
private static final int WALL = 0;
private static final int VISITED = 2;
public static boolean solveMaze(int[][] maze, int x, int y) {
if (x < 0 || y < 0 || x >= maze.length || y >= maze[0].length) {
return false;
}
if (maze[x][y] == WALL || maze[x][y] == VISITED) {
return false;
}
if (x == maze.length - 1 && y == maze[0].length - 1) {
return true;
}
maze[x][y] = VISITED;
if (solveMaze(maze, x - 1, y) || solveMaze(maze, x + 1, y) || solveMaze(maze, x, y - 1) || solveMaze(maze, x, y + 1)) {
return true;
}
return false;
}
public static void main(String[] args) {
int[][] maze = {
{PATH, WALL, PATH, PATH},
{PATH, PATH, PATH, WALL},
{WALL, WALL, WALL, PATH},
{PATH, PATH, PATH, PATH}
};
if (solveMaze(maze, 0, 0)) {
System.out.println("Path found!");
} else {
System.out.println("No path found.");
}
int[][] maze2 = {
{PATH, WALL, PATH, PATH},
{PATH, PATH, PATH, PATH},
{WALL, WALL, WALL, PATH},
{PATH, PATH, PATH, PATH}
};
if (solveMaze(maze2, 0, 0)) {
System.out.println("Path found!");
} else {
System.out.println("No path found.");
}
}
}
MazeSolver.main(null);
No path found.
Path found!