Skip to the content.

Methods HW

AP CSA

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));

true