Go to diff to previous submission
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package kon; import java.awt.Point; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; /** * * @author student */ public class Kon { private static boolean[][] map; private static int sx, sy, rx, ry, ex, ey; private static Queue<Point> st; private static int sol; int[][] podm = {{1,2},{2,1},{2, -1},{1,-2}, {-1,-2}, {-2,-1},{-2,1},{-1,2}}; while(sc.hasNextInt()) { rx = sc.nextInt(); ry = sc.nextInt(); sx = sc.nextInt(); sy = sc.nextInt(); ex = sc.nextInt(); ey = sc.nextInt(); st = new LinkedList<Point>(); map = new boolean[rx+1][ry+1]; sol = 1; map[sx][sy] = true; st.offer(null); if(rx ==1 && ry ==1 && sx == 1 && sy ==1 && ex ==1 && ey == 1) { } else { while(true) { if(st.size() == 1) { break; } if(p == null) { st.add(null); sol++; continue; } int x, y; boolean mimo = false; for(int j=0; j<8; j++) { x = p.x + podm[j][0]; y = p.y + podm[j][1]; if(0 < x && x <= rx && 0 < y && y <= ry) { mimo = solve(x, y); if(mimo) break; } } if(mimo) break; } } } } private static boolean solve(int x, int y) { if(!map[x][y]) { if(x == ex && y == ey) { return true; } else { map[x][y] = true; } } return false; } }
--- c4.s850.cteam122.grasshop.java.0.Kon.java +++ c4.s946.cteam122.grasshop.java.0.Kon.java @@ -44,139 +44,43 @@ st.offer(null); - while(true) + if(rx ==1 && ry ==1 && sx == 1 && sy ==1 && ex ==1 && ey == 1) { - if(st.size() == 1) - { - System.out.println("impossible"); - break; - } - //System.out.println(st.size()); - Point p = st.remove(); - - if(p == null) - { - st.add(null); - sol++; - continue; - } - - int x, y; - boolean mimo = false; - for(int j=0; j<8; j++) - { - x = p.x + podm[j][0]; - y = p.y + podm[j][1]; - - if(0 < x && x <= rx && 0 < y && y <= ry) - { - mimo = solve(x, y); - if(mimo) break; - } - } - if(mimo) break; - - /*if(p.x-2 > 0) - { - if(p.y+1 <= ry) - { - if(solve(p.x-2, p.y+1)) - break; - } - else if(p.y-1 > 0) - { - if(solve(p.x-2, p.y-1)) - break; - } - } - //atd - - if(p.x+1 <= rx) - { - if(p.y+2 <= ry) - { - if(solve(p.x+1, p.y+2)) - break; - } - else if(p.y-2 > 0) - { - if(solve(p.x+1, p.y-2)) - break; - } - } - - if(p.x+2 <= rx) - { - if(p.y+1 <= ry) - { - if(solve(p.x+2, p.y+1)) - break; - } - else if(p.y-1 > 0) - { - if(solve(p.x+2, p.y-1)) - break; - } - } - - //ds - - if(p.y-1 > 0) - { - if(p.x+2 <= rx) - { - if(solve(p.x+2, p.y-1)) - break; - } - else if(p.x-2 > 0) - { - if(solve(p.x-2, p.y-1)) - break; - } - } - - if(p.y-2 > 0) + System.out.println(0); + } + else + { + while(true) { - if(p.x+1 <= rx) - { - if(solve(p.x+1, p.y-2)) - break; - } - else if(p.x-1 > 0) + if(st.size() == 1) { - if(solve(p.x-1, p.y-2)) - break; + System.out.println("impossible"); + break; } - } - - // - - if(p.y+1 <= ry) - { - if(p.x+2 <= rx) + + Point p = st.remove(); + + if(p == null) { - if(solve(p.x+2, p.y+1)) - break; + st.add(null); + sol++; + continue; } - else if(p.x-2 > 0) + + int x, y; + boolean mimo = false; + for(int j=0; j<8; j++) { - if(solve(p.x-2, p.y+1)) - break; + x = p.x + podm[j][0]; + y = p.y + podm[j][1]; + + if(0 < x && x <= rx && 0 < y && y <= ry) + { + mimo = solve(x, y); + if(mimo) break; + } } + + if(mimo) break; } - - if(p.y+2 <= ry) - { - if(p.x+1 <= rx) - { - if(solve(p.x+1, p.y+2)) - break; - } - else if(p.x-1 > 0) - { - if(solve(p.x-1, p.y+2)) - break; - } - }*/ - } }