Rat Maze With Multiple Jumps Java
- Get link
- X
- Other Apps
PROGRAM TO SOLVE RAT IN A MAZE PROBLEM
class
MAIN{
// Maze size
static
int
N =
4
;
/* A utility function to print solution matrix
sol[N][N] */
static
void
printSolution(
int
sol[][])
{
for
(
int
i =
0
; i < N; i++)
{
for
(
int
j =
0
; j < N; j++)
{
System.out.printf(
" %d "
, sol[i][j]);
}
System.out.printf(
"\n"
);
}
}
/* A utility function to check if x, y is valid
index for N*N maze */
static
boolean
isSafe(
int
maze[][],
int
x,
int
y)
{
// if (x, y outside maze) return false
if
(x >=
0
&& x < N && y >=
0
&&
y < N && maze[x][y] !=
0
)
{
return
true
;
}
return
false
;
}
/* This function solves the Maze problem using
Backtracking. It mainly uses solveMazeUtil() to
solve the problem. It returns false if no path
is possible, otherwise return true and prints
the path in the form of 1s. Please note that
there may be more than one solutions,
this function prints one of the feasible solutions.*/
static
boolean
solveMaze(
int
maze[][])
{
int
sol[][] = {{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
}};
if
(solveMazeUtil(maze,
0
,
0
, sol) ==
false
)
{
System.out.printf(
"Solution doesn't exist"
);
return
false
;
}
printSolution(sol);
return
true
;
}
/* A recursive utility function to solve Maze problem */
static
boolean
solveMazeUtil(
int
maze[][],
int
x,
int
y,
int
sol[][])
{
// if (x, y is goal) return true
if
(x == N -
1
&& y == N -
1
)
{
sol[x][y] =
1
;
return
true
;
}
// Check if maze[x][y] is valid
if
(isSafe(maze, x, y) ==
true
)
{
// mark x, y as part of solution path
sol[x][y] =
1
;
/* Move forward in x direction */
for
(
int
i =
1
; i <= maze[x][y] && i < N; i++)
{
/* Move forward in x direction */
if
(solveMazeUtil(maze, x + i, y, sol) ==
true
)
{
return
true
;
}
/* If moving in x direction doesn't give
solution then Move down in y direction */
if
(solveMazeUtil(maze, x, y + i, sol) ==
true
)
{
return
true
;
}
}
/* If none of the above movements work then
BACKTRACK: unmark x, y as part of solution
path */
sol[x][y] =
0
;
return
false
;
}
return
false
;
}
// Driver Code
public
static
void
main(String[] args)
{
int
maze[][] = {{
2
,
1
,
0
,
0
},
{
3
,
0
,
0
,
1
},
{
0
,
1
,
0
,
1
},
{
0
,
0
,
0
,
1
}};
solveMaze(maze);
}
}
OUTPUT:
1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1
- Get link
- X
- Other Apps
Comments
Post a Comment