Advertisement
GrandtherAzaMarks

Find Way

May 9th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.11 KB | None | 0 0
  1. fun input(n: Int, m: Int, N: Array<BooleanArray>) {
  2.     for (i in 1 until n - 1)
  3.         for (j in 1 until m - 1)
  4.             N[i][j] = scan.nextInt() == 0
  5. }
  6. fun findWay(x: Int, y: Int, field: Array<BooleanArray>): Boolean {
  7.     if (x == field.size-2 && y == field[field.size-2].size-2) return true
  8.     else {
  9.         if (field[x+1][y]) {
  10.             field[x+1][y] = false
  11.             if (findWay(x+1, y, field)) return true
  12.         }
  13.         if (field[x-1][y]) {
  14.             field[x-1][y] = false
  15.             if (findWay(x-1, y, field)) return true
  16.         }
  17.         if (field[x][y+1]) {
  18.             field[x][y+1] = false
  19.             if (findWay(x, y+1, field)) return true
  20.         }
  21.         if (field[x][y-1]) {
  22.             field[x][y-1] = false
  23.             if (findWay(x, y-1, field)) return true
  24.         }
  25.     }
  26.     return false
  27. }
  28.  
  29. fun main(args: Array<String>) {
  30.     val n = scan.nextInt()+2
  31.     val m = scan.nextInt()+2
  32.     val checker = Array(n, {BooleanArray(m)})
  33.     input(n, m, checker)
  34.     print(findWay(1,1,checker))
  35. }
  36. /*4 7
  37. 0 1 0 0 0 1 0
  38. 0 1 0 1 0 0 0
  39. 0 0 0 1 1 1 0
  40. 1 1 1 0 0 1 0*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement