Go to diff to previous submission
import java.util.ArrayList; import java.util.Scanner; public class Main { public static final int[][] polePozic={{1,-2},{2,-1},{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{-1,-2}}; while(sc.hasNext()){ int pocetRadek=sc.nextInt(); int pocetSloupcu=sc.nextInt(); int poziceSkokanaX=sc.nextInt(); int poziceSkokanaY=sc.nextInt(); int poziceMnamkyX=sc.nextInt(); int poziceMnamkyY=sc.nextInt(); boolean poleJizSkakano[][]=new boolean[pocetRadek+1][pocetSloupcu+1]; poleJizSkakano[poziceSkokanaY][poziceSkokanaX]=true; // System.out.println(poleJizSkakano[5][5]); ArrayList<Integer> fronta = new ArrayList<Integer>(); fronta.add(poziceSkokanaX); fronta.add(poziceSkokanaY); fronta.add(0); boolean nalez=false; while(!fronta.isEmpty() && !nalez){ // System.out.println("aktx je "+aktX+"akty je "+aktY+" aktStep je "+aktStep); if((aktX ==poziceMnamkyX) && (aktY==poziceMnamkyY)){ nalez=true; }else{ aktStep++; for(int i=0;i<polePozic.length;i++){ int testX=aktX+polePozic[i][0]; int testY=aktY+polePozic[i][1]; if(((testX>=1) && (testX<=pocetSloupcu))&&((testY>=1)&&(testY<=pocetRadek))){ if(!poleJizSkakano[testY][testX]){ fronta.add(testX); fronta.add(testY); fronta.add(aktStep); } } } } } // System.out.println("dostalo se k ifu"); if(fronta.isEmpty()){ } } } } // private class Place{ // public int x; // public int y; // public int step; // // public Place(int x, int y, int step){ // this.x=x; // this.y=y; // this.step=step; // } // }
--- c4.s1122.cteam117.grasshop.java.0.Main.java +++ c4.s1200.cteam117.grasshop.java.0.Main.java @@ -19,29 +19,32 @@ boolean poleJizSkakano[][]=new boolean[pocetRadek+1][pocetSloupcu+1]; - Place pocatek=new Place(poziceSkokanaX, poziceSkokanaY,0); poleJizSkakano[poziceSkokanaY][poziceSkokanaX]=true; // System.out.println(poleJizSkakano[5][5]); - ArrayList<Place> fronta = new ArrayList<Place>(); - fronta.add(pocatek); + ArrayList<Integer> fronta = new ArrayList<Integer>(); + fronta.add(poziceSkokanaX); + fronta.add(poziceSkokanaY); + fronta.add(0); boolean nalez=false; while(!fronta.isEmpty() && !nalez){ - Place aktZpracovane=fronta.get(0); - fronta.remove(0); + Integer aktX=fronta.get(0); fronta.remove(0); + Integer aktY=fronta.get(0); fronta.remove(0); + Integer aktStep=fronta.get(0); fronta.remove(0); +// System.out.println("aktx je "+aktX+"akty je "+aktY+" aktStep je "+aktStep); - int aktX=aktZpracovane.x; - int aktY=aktZpracovane.y; if((aktX ==poziceMnamkyX) && (aktY==poziceMnamkyY)){ - System.out.println(aktZpracovane.step); + System.out.println(aktStep); nalez=true; }else{ - aktZpracovane.step++; + aktStep++; for(int i=0;i<polePozic.length;i++){ - int testX=aktZpracovane.x+polePozic[i][0]; - int testY=aktZpracovane.y+polePozic[i][1]; + int testX=aktX+polePozic[i][0]; + int testY=aktY+polePozic[i][1]; if(((testX>=1) && (testX<=pocetSloupcu))&&((testY>=1)&&(testY<=pocetRadek))){ if(!poleJizSkakano[testY][testX]){ - fronta.add(new Place(testX, testY,aktZpracovane.step)); + fronta.add(testX); + fronta.add(testY); + fronta.add(aktStep); } } @@ -50,5 +53,5 @@ } } -// System.out.println("dostalo se k ifu"); +// System.out.println("dostalo se k ifu"); if(fronta.isEmpty()){ System.out.println("impossible"); @@ -59,30 +61,21 @@ } -class Place{ - public int x; - public int y; - public int step; - public Place(int x, int y, int step){ - this.x=x; - this.y=y; - this.step=step; - } -} - -//class Fronta{ -// public Place zacatek; -// public Place konec; -// -// public Fronta(){ -// zacatek=null; -// konec=null; -// zacatek=konec; +// private class Place{ +// public int x; +// public int y; +// public int step; +// +// public Place(int x, int y, int step){ +// this.x=x; +// this.y=y; +// this.step=step; +// } // } -// -// public pridejPrvek() -// -// -//} + + + + +