gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java
+import java.util.Comparator;\r
+\r
/**\r
* Klasa Lavirint sadrzi 3 javne i tri privatne metode za trazenje puteva.\r
- * \r
+ *\r
* Klase KomparatorPoDuzini i KomparatorPoVrednosti predstavljaju komparatore\r
* koji se korste pri trazenju najkraceg i najvrednijeg puta.\r
*/\r
-\r
-import java.util.Comparator;\r
-\r
public class Lavirint {\r
\r
// Polje m sadrzi kompletnu mapu\r
private Mapa m;\r
+\r
// Polje optResenje sluzi za pamcenje optimalnog resenja\r
- private Resenje optResenje;\r
+ private Put optResenje;\r
\r
// Ucitava mapu iz datog fajla i stampa je na ekran\r
Lavirint(String imeFajla) {\r
- m = Mapa.ucitajIzFajla(imeFajla);\r
+ m = new Mapa(imeFajla);\r
m.stampaj();\r
}\r
\r
// Kreira optimalno resenje za put, pri cemu se za optimalnost resenja\r
// koristi komparator po duzini resenja, tj. trazi se najkrace resenje\r
// Samo resenje kreira se u metodi optPut\r
- public Resenje najkraciPut(int x, int y) {\r
- Resenje r = new Resenje();\r
+ public Put najkraciPut(int x, int y) {\r
+ Put r = new Put();\r
optPut(x, y, r, new KomparatorPoDuzini());\r
return optResenje;\r
}\r
// Kreira optimalno resenje za put, pri cemu se za optimalnost resenja\r
// koristi komparator po duzini resenja, tj. trazi se najvrednije resenje\r
// Samo resenje kreira se u metodi optPut\r
- public Resenje najvrednijiPut(int x, int y) {\r
- Resenje r = new Resenje();\r
- optPut(x, y, r, new KomparatorPoVredosti());\r
+ public Put najvrednijiPut(int x, int y) {\r
+ Put trenutni = new Put();\r
+ optPut(x, y, trenutni, new KomparatorPoVredosti());\r
return optResenje;\r
}\r
\r
// Proverava da li postoji put korsiteci pretrazivanje sa vracanjem\r
// Ukoliko se pronadje na prvi ili optimalniji put, taj put se pamti u\r
// optResenje\r
- // Optimalnost resenja se proverava komparatorom\r
- private void optPut(int x, int y, Resenje r, Comparator<Resenje> c) {\r
+ // Optimalnost puta se proverava komparatorom\r
+ private void optPut(int x, int y, Put trenutni, Comparator<Put> c) {\r
if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) {\r
return;\r
}\r
return;\r
}\r
if (m.getMat(x, y) == Mapa.IZLAZ) {\r
- r.dodaj(x, y, 0);\r
- if (optResenje == null || c.compare(r, optResenje) < 0) {\r
- optResenje = r.kopija();\r
+ trenutni.dodaj(x, y, 0);\r
+ if (optResenje == null || c.compare(trenutni, optResenje) < 0) {\r
+ optResenje = new Put(trenutni);\r
}\r
- r.izbaciKraj();\r
+ trenutni.izbaciKraj();\r
return;\r
}\r
- \r
+\r
// pokusavamo da trazimo dalje put\r
m.setPos(x, y, true);\r
- r.dodaj(x, y, m.getMat(x, y));\r
- optPut(x + 1, y, r, c);\r
- optPut(x, y + 1, r, c);\r
- optPut(x, y - 1, r, c);\r
- optPut(x - 1, y, r, c);\r
+ trenutni.dodaj(x, y, m.getMat(x, y));\r
+ optPut(x + 1, y, trenutni, c);\r
+ optPut(x, y + 1, trenutni, c);\r
+ optPut(x, y - 1, trenutni, c);\r
+ optPut(x - 1, y, trenutni, c);\r
m.setPos(x, y, false);\r
- r.izbaciKraj();\r
+ trenutni.izbaciKraj();\r
}\r
}\r
\r
-// Komparator za resenja po duzini resenja\r
-class KomparatorPoDuzini implements Comparator<Resenje> {\r
- public int compare(Resenje r1, Resenje r2) {\r
+// Komparator za puteve po duzini resenja\r
+class KomparatorPoDuzini implements Comparator<Put> {\r
+ public int compare(Put r1, Put r2) {\r
return r1.getLength() - r2.getLength();\r
}\r
}\r
\r
-// Komparator za resenja po vrednosti resenja\r
-class KomparatorPoVredosti implements Comparator<Resenje> {\r
- public int compare(Resenje r1, Resenje r2) {\r
+// Komparator za puteve po vrednosti resenja\r
+class KomparatorPoVredosti implements Comparator<Put> {\r
+ public int compare(Put r1, Put r2) {\r
return r2.getVrednost() - r1.getVrednost();\r
}\r
-}
\ No newline at end of file
+}\r