X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=blobdiff_plain;f=PretrazivanjeSaVracanjem%2FLavirint%2FNajboljiPut%2FPut.java;fp=PretrazivanjeSaVracanjem%2FLavirint%2FNajboljiPut%2FPut.java;h=41c7de2fc287c148bebc99dd14ff242593f0a067;hp=0000000000000000000000000000000000000000;hb=259cc384743122b180e79a962ec0f11634a5b67c;hpb=2f2710782e8107fc8dd587e6b70212e521561c42 diff --git a/PretrazivanjeSaVracanjem/Lavirint/NajboljiPut/Put.java b/PretrazivanjeSaVracanjem/Lavirint/NajboljiPut/Put.java new file mode 100644 index 0000000..41c7de2 --- /dev/null +++ b/PretrazivanjeSaVracanjem/Lavirint/NajboljiPut/Put.java @@ -0,0 +1,113 @@ + +/** + * Klasa Put koristi se za pamcenje pronadjenog puta. + * + * Polje Polja se koristi za pamcenje svih polja na putu. + * + */ +import java.util.ArrayList; + +public class Put { + private ArrayList polja; + + public Put() { + polja = new ArrayList(); + } + + /** + * Pravi novo resenje sa istim sadrzajem kao original + */ + public Put(Put original) { + // pozovemo "podrazumevani" konstruktor + this(); + // iskopiramo sva polja iz originala + for (Polje p : original.polja) { + dodaj(p.getX(), p.getY(), p.getV()); + } + } + + // Dodaje pulje u resenje + public void dodaj(int x, int y, int v) { + polja.add(new Polje(x, y, v)); + } + + // Izbacuje polje iz resenja + public void izbaciKraj() { + if (getLength() > 0) { + polja.remove(getLength() - 1); + } else { + System.err.println("greska: resenje je vec prazno"); + } + } + + // Stampa resenje + public void stampaj() { + System.out.println(getLength()); + for (int i = 0; i < getLength(); i++) + System.out.println(polja.get(i)); + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("Resenje: [ "); + if (getLength() > 0) { + sb.append(polja.get(0)); + for (int i = 1; i < getLength(); i++) { + sb.append(", " + polja.get(i)); + } + } + sb.append(" ]"); + + return sb.toString(); + } + + // Vraca duzinu resenja + public int getLength() { + return polja.size(); + } + + // Kreira nezavisnu kopiju ovog resenja + public Put kopija() { + Put rez = new Put(); + for (Polje p : polja) { + rez.dodaj(p.getX(), p.getY(), p.getV()); + } + return rez; + } + + // Vraca vrednost puta + // Vrednost se definise kao zbir svih vrednosti polja na putu + public int getVrednost() { + int rez = 0; + for (Polje p : polja) { + rez = rez + p.getV(); + } + return rez; + } + + public class Polje { + private int x, y, v; + + Polje(int x, int y, int v) { + this.x = x; + this.y = y; + this.v = v; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public int getV() { + return v; + } + + public String toString() { + return x + " " + y + " " + v; + } + } +}