Tuesday, February 1, 2022

Flood Fill

 



package pep.Day11;

public class FloodFill {
public static void main(String[] args) {
int[][] arr = new int[][]{
{0, 0, 0},
{1, 0, 0},
{0, 0, 0}
};

boolean[][] visited = new boolean[arr.length][arr[0].length];
floodfill(arr, 0, 0, "", visited);
}

private static void floodfill(int[][] arr, int row, int col, String ans, boolean[][] visited) {
if (row == arr.length - 1 && col == arr[0].length - 1) {
System.out.println(ans);
return;
}

if (row < 0 || col < 0 || row > arr.length - 1 || col > arr[0].length - 1 || arr[row][col] == 1 || visited[row][col] == true) {
return;
}
visited[row][col] = true;
floodfill(arr, row - 1, col, ans + "t", visited);
floodfill(arr, row, col - 1, ans + "l", visited);
floodfill(arr, row + 1, col, ans + "d", visited);
floodfill(arr, row, col + 1, ans + "r", visited);
visited[row][col] = false;


}
}


package pep.Day11;

import static PRACTICE.Recursion.BackTracking.FloodFill.floodfill_method1;

public class FloodFill {
public static void main(String[] args) {
int[][] arr = new int[][]{
{0, 0, 0},
{1, 0, 0},
{0, 0, 0}
};

boolean[][] visited = new boolean[arr.length][arr[0].length];
floodfill_method1(arr, 0, 0, "", visited);
}

private static void floodfill_method1(int[][] maze, int row, int col, String ans, boolean[][] visited) {
if (row == maze.length - 1 && col == maze[0].length - 1) {
System.out.println(ans);
return;
}

if (row < 0 || col < 0 || row > maze.length - 1 || col > maze[0].length - 1 || maze[row][col] == 1 || visited[row][col] == true) {
return;
}
visited[row][col] = true;

floodfill_method1(maze, row - 1, col, ans + "t", visited);
floodfill_method1(maze, row, col - 1, ans + "l", visited);
floodfill_method1(maze, row + 1, col, ans + "d", visited);
floodfill_method1(maze, row, col + 1, ans + "r", visited);
visited[row][col] = false;


}


private static void floodfill_method2(int[][] maze, int row, int col, String ans, boolean[][] visited) {
if (row == maze.length - 1 && col == maze[0].length - 1) {
System.out.println(ans);
return;
}

if (row < 0 || col < 0 || row > maze.length - 1 || col > maze[0].length - 1 || maze[row][col] == 1 || visited[row][col] == true) {
return;
}
visited[row][col] = true;


int[][] arr = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};
String[] dir = new String[]{"t", "l", "d", "r"};

for (int i = 0; i < arr.length; i++)
floodfill_method2(maze, row + arr[i][0], col + arr[i][1], ans + dir[i], visited);

visited[row][col] = false;


}


}

No comments:

Post a Comment

Diagonal Traversal

 eg.  1       2       3       4 5      6       7       8 9    10    11     12 13  14   15    16 Output: 1 6 11 16 2 7 12 3 8 4  Approach:...