jakessc level
获赞
76
粉丝
2
关注
1
看过 TA
0
西安电子科大
2017
Java
IP属地:未知
暂未填写个人简介
私信
关注
2016-08-02 22:09
西安电子科大 Java
有人搞定第二个编程题吗,走迷宫那个。有弄明白的求解释一下,感觉个人理解题意有问题。
明经:import java.util.Queue; import java.util.Scanner; import java.util.concurrent.LinkedBlockingQueue; public class Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         Queue<Integer> yqueue=new LinkedBlockingQueue<>();         Queue<Integer> xqueue=new LinkedBlockingQueue<>();         while (in.hasNext()) {         int n=in.nextInt();         int m=in.nextInt();         char[][] cs=new char[55][55];         bu[] bu=new bu[55];         in.nextLine();         for(int i=0;i<n;i++)         {         cs[i]=in.nextLine().toCharArray();         }         int x0=in.nextInt();         int y0=in.nextInt();         cs[x0][y0]='x';         int k=in.nextInt();         for(int i=0;i<k;i++)         {         int dx=in.nextInt();         int dy=in.nextInt();         bu[i]=new bu(dx, dy);         }         int[][] a=new int[55][55];         a[x0][y0]=0;         xqueue.add(x0);         yqueue.add(y0);         int x,y;         int max=-1;         while(!xqueue.isEmpty())         {         x=xqueue.poll();         y=yqueue.poll();         for(int i=0;i<k;i++)         {                     //  System.out.println(i);         if(x+bu[i].getDx()>=0&&y+bu[i].getDy()>=0&&         x+bu[i].getDx()<n&&y+bu[i].getDy()<m&&         a[x][y]+1>a[x+bu[i].getDx()][y+bu[i].getDy()]&&                 cs[x+bu[i].getDx()][y+bu[i].getDy()]=='.')         {         a[x+bu[i].getDx()][y+bu[i].getDy()]=a[x][y]+1;         cs[x+bu[i].getDx()][y+bu[i].getDy()]='x';         xqueue.add(x+bu[i].getDx());         yqueue.add(y+bu[i].getDy());         if(a[x][y]+1>max)         {         max=a[x][y]+1;         }                 //   System.out.print(x+bu[i].getDx());                   // System.out.println(y+bu[i].getDy());         }         }         }         int y1=0; for(int x1=0,x2=n-1;y1<m;y1++) { if(a[x1][y1]!=0||a[x2][y1]!=0) { break; } } if(y1==m) { max=-1; }             System.out.println(max);         }     }    static class bu{     private int dx;     private int dy;     bu(){}     bu(int dx,int dy)     {     this.dx=dx;     this.dy=dy;     }     public int getDx() { return dx; }     public int getDy() { return dy; }     public void setDx(int dx) { this.dx = dx; }     public void setDy(int dy) { this.dy = dy; }     } }
投递网易等公司10个岗位 >
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务