Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class Labyrintti {
- public int laske(int[][] kartta) {
- int maaliY = 0;
- int maaliX = 0;
- ArrayDeque<int[]> jono = new ArrayDeque<>();
- int[][] etaisyys = new int[kartta.length][kartta[0].length];
- for (int i = 1; i < kartta.length; i++) {
- for (int j = 1; j < kartta[0].length; j++) {
- if (kartta[i][j] == 3) {
- maaliY = i;
- maaliX = j;
- kartta[i][j] = 0;
- }
- if (kartta[i][j] == 2) {
- kartta[i][j] = 4; // visited
- etaisyys[i][j] = 0;
- int[] alku = {i, j};
- jono.add(alku);
- // i = kartta.length;
- // j = kartta[0].length;
- }
- }
- }
- while (!jono.isEmpty()) {
- int[] solmu = jono.pollFirst();
- if (kartta[solmu[0] + 1][solmu[1]] == 0) {
- int[] naapuri1 = {solmu[0] + 1, solmu[1]};
- jono.add(naapuri1);
- kartta[solmu[0] + 1][solmu[1]] = 4;
- etaisyys[solmu[0] + 1][solmu[1]] = etaisyys[solmu[0]][solmu[1]] + 1;
- }
- if (kartta[solmu[0] - 1][solmu[1]] == 0) {
- int[] naapuri2 = {solmu[0] - 1, solmu[1]};
- jono.add(naapuri2);
- kartta[solmu[0] - 1][solmu[1]] = 4;
- etaisyys[solmu[0] - 1][solmu[1]] = etaisyys[solmu[0]][solmu[1]] + 1;
- }
- if (kartta[solmu[0]][solmu[1] + 1] == 0) {
- int[] naapuri3 = {solmu[0], solmu[1] + 1};
- jono.add(naapuri3);
- kartta[solmu[0]][solmu[1] + 1] = 4;
- etaisyys[solmu[0]][solmu[1] + 1] = etaisyys[solmu[0]][solmu[1]] + 1;
- }
- if (kartta[solmu[0]][solmu[1] - 1] == 0) {
- int[] naapuri4 = {solmu[0], solmu[1] - 1};
- jono.add(naapuri4);
- kartta[solmu[0]][solmu[1] - 1] = 4;
- etaisyys[solmu[0]][solmu[1] - 1] = etaisyys[solmu[0]][solmu[1]] +1;
- }
- if (solmu[0] == maaliY && solmu[1] == maaliX) {
- return etaisyys[solmu[0]][solmu[1]];
- }
- }
- return -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement