deyanmalinov

Find All Paths in a Labyrinth

Jul 22nd, 2021 (edited)
614
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.company;
  2. import java.util.*;
  3.  
  4. public class Main {
  5.     public static void main(String[] args){
  6.         Scanner scanner = new Scanner(System.in);
  7.         int row = scanner.nextInt();
  8.         int col = scanner.nextInt();
  9.         char dir = ' ';
  10.         char [][] matrix = new char[row][col];
  11.         List<Character> path = new ArrayList<>();
  12.         scanner.nextLine();
  13.         for (int i = 0; i < row; i++) {
  14.             String line = scanner.nextLine();
  15.             for (int j = 0; j < col; j++) {
  16.                 char[] split = line.toCharArray();
  17.                 matrix[i] = split;
  18.             }
  19.         }
  20.         Move(row, col, dir);
  21.  
  22.  
  23.     }
  24.     public static int row ;
  25.     public static int col ;
  26.     public static char dir ;
  27.     public static char [][] matrix = new char[row][col];
  28.     public static List<Character> path = new ArrayList<>();
  29.     public static Scanner scanner = new Scanner(System.in);
  30.  
  31.  
  32.  
  33.     static void Move(int row, int col, char dir){
  34.         if (OutLab(row, col)){
  35.             return;
  36.         }
  37.  
  38.         path.add(dir);
  39.  
  40.         if (isFinish(row, col)){
  41.             for (Character character : path) {
  42.                 System.out.print(character);
  43.             }
  44.         }else if (canGo(row, col)){
  45.             matrix[row][col] = 'x';
  46.             Move(row + 1, col, 'D');
  47.             Move(row + 1, col, 'U');
  48.             Move(row + 1, col, 'R');
  49.             Move(row + 1, col, 'L');
  50.             matrix[row][col] = '-';
  51.         }
  52.  
  53.         path.remove(dir);
  54.  
  55.     }
  56.  
  57.     static boolean canGo(int row, int col) {
  58.         if (matrix[row][col] == 'x' || matrix[row][col] == '*') {
  59.             return false;
  60.         }
  61.         return true;
  62.     }
  63.  
  64.        static boolean OutLab(int row, int col) {
  65.         if (row < 0 || row >= matrix.length){
  66.             return true;
  67.         }
  68.         if (col < 0 || col >= matrix.length){
  69.             return true;
  70.         }
  71.         return false;
  72.     }
  73.  
  74.     static boolean isFinish(int row, int col){
  75.         return matrix[row][col] == 'e';
  76.     }
  77. }
RAW Paste Data