Untitled
unknown
java
2 years ago
2.3 kB
2
Indexable
Never
package pl.amen; import java.awt.*; import java.util.Stack; public class Solution { public static void solution(int[][] maze) { int[][] visited = new int[maze.length][maze.length]; Stack<JumpState> jumpStateStack = new Stack<>(); jumpStateStack.push(new JumpState(new Point(0, 0), 1)); while (!jumpStateStack.isEmpty()) { JumpState currentState = jumpStateStack.pop(); if (currentState.point.x == maze.length - 1 && currentState.point.y == maze.length - 1) { System.out.printf("found it, length = " + currentState.length); break; } if (((currentState.point.x + 1) < maze.length) && maze[currentState.point.x + 1][currentState.point.y] == 0) { jumpStateStack.push(new JumpState(new Point(currentState.point.x + 1, currentState.point.y), currentState.length + 1)); } if (((currentState.point.x - 1) >= 0) && maze[currentState.point.x - 1][currentState.point.y] == 0) { jumpStateStack.push(new JumpState(new Point(currentState.point.x - 1, currentState.point.y), currentState.length + 1)); } if (((currentState.point.y + 1)) < maze.length && maze[currentState.point.x][currentState.point.y + 1] == 0) { jumpStateStack.push(new JumpState(new Point(currentState.point.x + 1, currentState.point.y + 1), currentState.length + 1)); } if (((currentState.point.y - 1) >= 0) && maze[currentState.point.x][currentState.point.y - 1] == 0) { jumpStateStack.push(new JumpState(new Point(currentState.point.x + 1, currentState.point.y - 1), currentState.length + 1)); } } System.out.println("No exit"); } public static void main(String[] args) { Solution.solution(new int[][]{{0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0}, {0, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0}}); } public static class JumpState { Point point; int length; public JumpState(Point point, int length) { this.point = point; this.length = length; } } }