forked from DPrinceKumar/HacktoberFest2020-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRat in Maze .java
56 lines (45 loc) · 1.15 KB
/
Rat in Maze .java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.*;
public class RatInMaze {
static int N = 4;
public static void main(String[] args) {
int[][] maze = { { 1, 0, 0, 0 }, { 1, 1, 0, 1 }, { 0, 1, 0, 0 }, { 1, 1, 1, 1 } };
solvemaze(maze);
}
public static boolean solvemaze(int[][] maze) {
int[][] sol = new int[N][N];
if (solvemaze1(sol, 0, 0, maze) == false) {
System.out.println("Not possible");
return false;
} else
printres(sol);
return true;
}
public static boolean solvemaze1(int[][] sol, int x, int y, int[][] maze) {
if (x == N - 1 && y == N - 1 && maze[x][y] == 1) {
sol[x][y] = 1;
return true;
}
if (isSafe(maze, x, y)) {
sol[x][y] = 1;
if (solvemaze1(sol, x + 1, y, maze) == true)
return true;
if (solvemaze1(sol, x, y + 1, maze) == true)
return true;
sol[x][y] = 0;
// return false;
}
return false;
}
public static boolean isSafe(int[][] maze, int x, int y) {
return (x >= 0 && x < N && y >= 0 && y < N && maze[x][y] == 1);
}
public static void printres(int[][] sol) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(sol[i][j] + " ");
}
System.out.println();
}
return;
}
}