RexyBadDog

dfs_example.java

Feb 12th, 2022 (edited)
1,077
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.60 KB | None | 0 0
  1. import java.io.*;
  2.  
  3. public class Solution {
  4.     static int globalLongest = 0;
  5.     static int steps = 0;
  6.     static int longestPath(int[][] maze, int startX, int startY, int targetX, int targetY) {
  7.         dfs(maze, startX, startY, targetX, targetY, 1);
  8.         return globalLongest;
  9.     }
  10.  
  11.     static void dfs(int[][] maze, int x, int y, int targetX, int targetY, int longest){
  12.         System.out.println("dfs loop:" + steps + ", x: " + x + ", y: " + y);
  13.         steps++;
  14.         maze[x][y] = 1;
  15.  
  16.         if(x == targetX && y == targetY) {
  17.             if(globalLongest < longest) {
  18.                 globalLongest = longest;
  19.             }
  20.             maze[x][y] = 0;
  21.             return;
  22.         }
  23.  
  24.         if(x + 1 <  maze.length && maze[x+1][y] == 0)
  25.             dfs(maze, x+1, y,  targetX, targetY, longest + 1);
  26.        
  27.         if(x - 1 >=  0 && maze[x-1][y] == 0)
  28.             dfs(maze, x-1, y,  targetX, targetY, longest + 1);
  29.        
  30.         if(y + 1 <  maze[0].length && maze[x][y+1] == 0)
  31.             dfs(maze, x, y+1,  targetX, targetY, longest + 1);
  32.        
  33.         if(y - 1 >=  0 && maze[x][y - 1] == 0)
  34.             dfs(maze, x, y-1,  targetX, targetY, longest + 1);
  35.        
  36.         maze[x][y] = 0;
  37.     }
  38.  
  39.     public static void main(String[] args) {
  40.         int[][] maze = new int[5][7];
  41.         maze[0] = new int[]{0,0,0,0,0,0,0};
  42.         maze[1] = new int[]{0,1,0,0,1,0,0};
  43.         maze[2] = new int[]{1,0,0,1,0,0,0};
  44.         maze[3] = new int[]{0,0,0,0,0,0,0};
  45.         maze[4] = new int[]{0,1,0,0,0,1,0};
  46.  
  47.         System.out.println(longestPath(maze, 0, 1, 3, 5));
  48.     }
  49. }
  50.  
Add Comment
Please, Sign In to add comment