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