X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=blobdiff_plain;f=PretrazivanjeSaVracanjem%2FLavirint%2FObjedinjenoResenje%2FLavirint.java;fp=PretrazivanjeSaVracanjem%2FLavirint%2FObjedinjenoResenje%2FLavirint.java;h=5b84e5adfddf7d0207d7c8a90d54dd6bb8ebc2ee;hp=77069ae02001960c6c0c9ffec707739bb05fbc7c;hb=1b832014e4d2d31b2502f4688623140d722005b1;hpb=76ef3a4960a1d7351cf521bfacb350d72628d53a diff --git a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java index 77069ae..5b84e5a 100644 --- a/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java +++ b/PretrazivanjeSaVracanjem/Lavirint/ObjedinjenoResenje/Lavirint.java @@ -12,7 +12,7 @@ public class Lavirint { private Mapa m; // Polje optResenje sluzi za pamcenje optimalnog resenja - private Resenje optResenje; + private Put optResenje; // Ucitava mapu iz datog fajla i stampa je na ekran Lavirint(String imeFajla) { @@ -91,8 +91,8 @@ public class Lavirint { // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja // koristi komparator po duzini resenja, tj. trazi se najkrace resenje // Samo resenje kreira se u metodi optPut - public Resenje najkraciPut(int x, int y) { - Resenje r = new Resenje(); + public Put najkraciPut(int x, int y) { + Put r = new Put(); optPut(x, y, r, new KomparatorPoDuzini()); return optResenje; } @@ -100,17 +100,17 @@ public class Lavirint { // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja // koristi komparator po duzini resenja, tj. trazi se najvrednije resenje // Samo resenje kreira se u metodi optPut - public Resenje najvrednijiPut(int x, int y) { - Resenje r = new Resenje(); - optPut(x, y, r, new KomparatorPoVredosti()); + public Put najvrednijiPut(int x, int y) { + Put trenutni = new Put(); + optPut(x, y, trenutni, new KomparatorPoVredosti()); return optResenje; } // Proverava da li postoji put korsiteci pretrazivanje sa vracanjem // Ukoliko se pronadje na prvi ili optimalniji put, taj put se pamti u // optResenje - // Optimalnost resenja se proverava komparatorom - private void optPut(int x, int y, Resenje r, Comparator c) { + // Optimalnost puta se proverava komparatorom + private void optPut(int x, int y, Put trenutni, Comparator c) { if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) { return; } @@ -121,36 +121,36 @@ public class Lavirint { return; } if (m.getMat(x, y) == Mapa.IZLAZ) { - r.dodaj(x, y, 0); - if (optResenje == null || c.compare(r, optResenje) < 0) { - optResenje = new Resenje(r); + trenutni.dodaj(x, y, 0); + if (optResenje == null || c.compare(trenutni, optResenje) < 0) { + optResenje = new Put(trenutni); } - r.izbaciKraj(); + trenutni.izbaciKraj(); return; } // pokusavamo da trazimo dalje put m.setPos(x, y, true); - r.dodaj(x, y, m.getMat(x, y)); - optPut(x + 1, y, r, c); - optPut(x, y + 1, r, c); - optPut(x, y - 1, r, c); - optPut(x - 1, y, r, c); + trenutni.dodaj(x, y, m.getMat(x, y)); + optPut(x + 1, y, trenutni, c); + optPut(x, y + 1, trenutni, c); + optPut(x, y - 1, trenutni, c); + optPut(x - 1, y, trenutni, c); m.setPos(x, y, false); - r.izbaciKraj(); + trenutni.izbaciKraj(); } } -// Komparator za resenja po duzini resenja -class KomparatorPoDuzini implements Comparator { - public int compare(Resenje r1, Resenje r2) { +// Komparator za puteve po duzini resenja +class KomparatorPoDuzini implements Comparator { + public int compare(Put r1, Put r2) { return r1.getLength() - r2.getLength(); } } -// Komparator za resenja po vrednosti resenja -class KomparatorPoVredosti implements Comparator { - public int compare(Resenje r1, Resenje r2) { +// Komparator za puteve po vrednosti resenja +class KomparatorPoVredosti implements Comparator { + public int compare(Put r1, Put r2) { return r2.getVrednost() - r1.getVrednost(); } }