Find whether path exist Java
- Get link
- X
- Other Apps
PROGRAM TO FIND WHETHER THERE IS PATH BETWEEN TWO CELLS IN MATRIX
class
Path {
// Method for finding and printing
// whether the path exists or not
public
static
void
isPath(
int
matrix[][],
int
n)
{
// Defining visited array to keep
// track of already visited indexes
boolean
visited[][]
=
new
boolean
[n][n];
// Flag to indicate whether the
// path exists or not
boolean
flag =
false
;
for
(
int
i =
0
; i < n; i++) {
for
(
int
j =
0
; j < n; j++) {
// if matrix[i][j] is source
// and it is not visited
if
(
matrix[i][j] ==
1
&& !visited[i][j])
// Starting from i, j and
// then finding the path
if
(isPath(
matrix, i, j, visited)) {
// if path exists
flag =
true
;
break
;
}
}
}
if
(flag)
System.out.println(
"YES"
);
else
System.out.println(
"NO"
);
}
// Method for checking boundaries
public
static
boolean
isSafe(
int
i,
int
j,
int
matrix[][])
{
if
(
i >=
0
&& i < matrix.length
&& j >=
0
&& j < matrix[
0
].length)
return
true
;
return
false
;
}
// Returns true if there is a
// path from a source (a
// cell with value 1) to a
// destination (a cell with
// value 2)
public
static
boolean
isPath(
int
matrix[][],
int
i,
int
j,
boolean
visited[][])
{
// Checking the boundaries, walls and
// whether the cell is unvisited
if
(
isSafe(i, j, matrix)
&& matrix[i][j] !=
0
&& !visited[i][j]) {
// Make the cell visited
visited[i][j] =
true
;
// if the cell is the required
// destination then return true
if
(matrix[i][j] ==
2
)
return
true
;
// traverse up
boolean
up = isPath(
matrix, i -
1
,
j, visited);
// if path is found in up
// direction return true
if
(up)
return
true
;
// traverse left
boolean
left
= isPath(
matrix, i, j -
1
, visited);
// if path is found in left
// direction return true
if
(left)
return
true
;
// traverse down
boolean
down = isPath(
matrix, i +
1
, j, visited);
// if path is found in down
// direction return true
if
(down)
return
true
;
// traverse right
boolean
right
= isPath(
matrix, i, j +
1
,
visited);
// if path is found in right
// direction return true
if
(right)
return
true
;
}
// no path has been found
return
false
;
}
// driver program to
// check above function
public
static
void
main(String[] args)
{
int
matrix[][] = { {
0
,
3
,
0
,
1
},
{
3
,
0
,
3
,
3
},
{
2
,
3
,
3
,
3
},
{
0
,
3
,
3
,
3
} };
// calling isPath method
isPath(matrix,
4
);
}
}
OUTPUT:
YES
- Get link
- X
- Other Apps
Comments
Post a Comment