From: Doni Pracner Date: Tue, 29 Nov 2016 21:06:18 +0000 (+0100) Subject: sklonjena prethodna, komplikovanija resenja X-Git-Url: https://svarog.pmf.uns.ac.rs/gitweb/?a=commitdiff_plain;h=0f190d2a72794690d9e17baeeae38a1fcd63104f;p=spa2-materijali.git sklonjena prethodna, komplikovanija resenja --- diff --git a/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/Lavirint.java b/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/Lavirint.java deleted file mode 100644 index 3dd580f..0000000 --- a/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/Lavirint.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Klasa Lavirint sadrzi 2 javne i jednu privatnu metodu za trazenje puteva. - * - */ - -public class Lavirint { - - // Polje m sadrzi kompletnu mapu - private Mapa m; - - // Ucitava mapu iz datog fajla i stampa je na ekran - Lavirint(String imeFajla) { - m = Mapa.ucitajIzFajla(imeFajla); - m.stampaj(); - } - - // Provarava da li postoji put do izlaza i vraca vrednost true - // ako postoji put ili vrednost false ako ne postoji - public boolean postojiPut(int x, int y) { - if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) { - return false; - } - if (m.getPos(x, y) == true) { - return false; - } - if (m.getMat(x, y) == Mapa.ZID) { - return false; - } - if (m.getMat(x, y) == Mapa.IZLAZ) { - return true; - } else { - m.setPos(x, y, true); - if (postojiPut(x + 1, y)) { - return true; - } - if (postojiPut(x - 1, y)) { - return true; - } - if (postojiPut(x, y + 1)) { - return true; - } - if (postojiPut(x, y - 1)) { - return true; - } - m.setPos(x, y, false); - return false; - } - } - - // Poziva metodu rput da pronadje i ispise put, ako postoji - // Ukoliko put ne postoji, ispisuje poruku o gresci - public void nadjiPut(int x, int y) { - if (!rput(x, y)) { - System.err.println("Ne postoji put"); - } - } - - // Proverava da li postoji put korsiteci pretrazivanje sa vracanjem - // Ukoliko se pronadje izlaz iz lavirinta, stampa se put u obrnutom - // redosledu - // Put se stampa pri povratku iz rekurzije - private boolean rput(int x, int y) { - if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) { - return false; - } - if (m.getPos(x, y)) { - return false; - } - if (m.getMat(x, y) == Mapa.ZID) { - return false; - } - if (m.getMat(x, y) == Mapa.IZLAZ) { - System.out.println(x + " " + y); - return true; - } else { - m.setPos(x, y, true); - if (rput(x + 1, y) || rput(x, y + 1) || rput(x, y - 1) - || rput(x - 1, y)) { - System.out.println(x + " " + y); - return true; - } - m.setPos(x, y, false); - return false; - } - } -} diff --git a/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/LavirintProgram.java b/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/LavirintProgram.java deleted file mode 100644 index 0532130..0000000 --- a/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/LavirintProgram.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Program za nalazenje puta u lavirintu. - * - * Date su dve varijante problema - * - * Jednostavnije je samo nalazenje da li put postoji. - * - * Prosirenje tog resenja nam ispisuje taj nadjeni put. - */ - -public class LavirintProgram { - - public static void main(String[] args) { - Svetovid.out.println("Unesite ime fajla: "); - String fajl = Svetovid.in.readLine(); - if (!Svetovid.testIn(fajl)) { - System.out.println("Greska: nema fajla!"); - return; - } - - Lavirint l = new Lavirint(fajl); - - if (l != null) { - System.out.println("1 - da li postoji put"); - System.out.println("2 - ispis nekog puta (ako postoji)"); - System.out.println("Unesite izbor 1-2:"); - int op = Svetovid.in.readInt(); - - switch (op) { - case 1: - if (l.postojiPut(0, 0)) { - System.out.println("Postoji put"); - } else { - System.out.println("Ne postoji put"); - } - break; - case 2: - l.nadjiPut(0, 0); - break; - default: - System.err.println("Uneli ste pogresan izbor"); - } - } - } -} \ No newline at end of file diff --git a/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/Mapa.java b/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/Mapa.java deleted file mode 100644 index a5e8a15..0000000 --- a/PretrazivanjeSaVracanjem/Lavirint/PostojanjePuta/Mapa.java +++ /dev/null @@ -1,78 +0,0 @@ -public class Mapa { - public final static int IZLAZ = -99; - public final static int ZID = -11; - public final static int ERROR = Integer.MIN_VALUE; - - private int visina, sirina; - private int[][] mat; - private boolean[][] pos; - - public int getSirina() { - return sirina; - } - - public int getVisina() { - return visina; - } - - public void setPos(int x, int y, boolean b) { - if (0 <= x && x < sirina && 0 <= y && y < visina) { - pos[x][y] = b; - } - } - - public boolean getPos(int x, int y) { - if (0 <= x && x < sirina && 0 <= y && y < visina) { - return pos[x][y]; - } else { - return true; - } - } - - public int getMat(int x, int y) { - if (0 <= x && x < sirina && 0 <= y && y < visina) { - return mat[x][y]; - } else { - return ERROR; - } - } - - public Mapa(int sirina, int visina) { - this.sirina = sirina; - this.visina = visina; - mat = new int[sirina][visina]; - pos = new boolean[sirina][visina]; - } - - public static Mapa ucitajIzFajla(String imeFajla) { - if (!Svetovid.testIn(imeFajla)) { - return null; - } - - int sirina = Svetovid.in(imeFajla).readInt(); - int visina = Svetovid.in(imeFajla).readInt(); - if (sirina >= 0 && visina >= 0) { - Mapa res = new Mapa(sirina, visina); - for (int j = 0; j < visina; j++) - for (int i = 0; i < sirina; i++) - res.mat[i][j] = Svetovid.in(imeFajla).readInt(); - Svetovid.closeIn(imeFajla); - return res; - } else { - Svetovid.closeIn(imeFajla); - return null; - } - } - - public void stampaj() { - if (visina != 0 && sirina != 0) { - System.out.println(visina + " " + sirina); - for (int j = 0; j < visina; j++) { - for (int i = 0; i < sirina; i++) { - System.out.print(mat[i][j] + "\t"); - } - System.out.println(); - } - } - } -}