You are viewing a single comment's thread. Return to all comments →
public static int minimumMoves(List grid, int startX, int startY, int goalX, int goalY) {
int x, y, count, size = grid.size(); int[][] table = new int[size][size]; Queue<int[]> queuePoint = new LinkedList<>(); queuePoint.add(new int[]{startX, startY}); // set table all = 0 for(x = 0; x < size; x++) for(y = 0; y < size; y++) table[x][y] = 0; while(!queuePoint.isEmpty()){ int[] point = queuePoint.poll(); x = point[0]; y = point[1]; if(x == goalX && y == goalY) break; // count++ count = table[x][y] + 1; // up for(int i=x-1; i >=0 && grid.get(i).charAt(y)=='.';i--){ if(table[i][y] == 0){ table[i][y] = count; queuePoint.add(new int[]{i,y}); } } // down for(int i=x+1; i<size && grid.get(i).charAt(y)=='.';i++){ if(table[i][y] == 0){ table[i][y] = count; queuePoint.add(new int[]{i,y}); } } // left for(int i=y-1; i>=0 && grid.get(x).charAt(i)=='.';i--){ if(table[x][i] == 0){ table[x][i] = count; queuePoint.add(new int[]{x,i}); } } // right for(int i=y+1; i<size && grid.get(x).charAt(i)=='.';i++){ if(table[x][i] == 0){ table[x][i] = count; queuePoint.add(new int[]{x,i}); } } } return table[goalX][goalY]; }
Seems like cookies are disabled on this browser, please enable them to open this website
Castle on the Grid
You are viewing a single comment's thread. Return to all comments →
public static int minimumMoves(List grid, int startX, int startY, int goalX, int goalY) {