Advertisement
vov44k

Li algorithm

Feb 27th, 2022
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.37 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) {
  6.         Scanner in = new Scanner(System.in);
  7.  
  8.         int n = in.nextInt();
  9.         int m = in.nextInt();
  10.         int[][] a = new int[n][m];
  11.         int[][] b = new int[n][m];
  12.         for (int i = 0; i < n; i++) {
  13.             for (int j = 0; j < m; j++) {
  14.                 a[i][j] = in.nextInt();
  15.                 b[i][j] = -1;
  16.             }
  17.         }
  18.         b[0][0] = 0;
  19.         int k = 0;
  20.         boolean flag = false;
  21.         int[] D1 = {0, 0, 1, -1};
  22.         int[] D2 = {1, -1, 0, 0};
  23.         do {
  24.             flag = true;
  25.             for (int i = 0; i < n; i++) {
  26.                 for (int j = 0; j < m; j++) {
  27.                     if (b[i][j] == k) {
  28.                         for (int t = 0; t < 4; t++) {
  29.                             int d1 = D1[t], d2 = D2[t];
  30.                             if (i + d1 >= 0 && i + d1 < n && j + d2 >= 0 && j + d2 < m && a[i + d1][j + d2] == 0 && b[i + d1][j + d2] == -1) {
  31.                                 b[i + d1][j + d2] = k + 1;
  32.                                 flag = false;
  33.                             }
  34.  
  35.                         }
  36.                     }
  37.                 }
  38.             }
  39.             k++;
  40.         } while (!flag && b[n - 1][m - 1] == -1);
  41.         System.out.println(b[n - 1][m - 1]);
  42.         in.close();
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement