为啥java就MLE啊!!!!!!

回复帖子

@ctnilpp 2019-03-08 10:15 回复
package p1363;

import java.util.Scanner;

public class Main {
    static int ans = 0;
    static int n,m;
    static int map[][] = new int[1505][1505];
    static int vis[][][] = new int[1505][1505][3];
    static int dire[][] = {
            {0,1},{0,-1},{1,0},{-1,0}
    };
    static String s = new String();
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
             ans =0;
             n = in.nextInt();
             m = in.nextInt();
             int sx=0,sy=0;
             for(int i=0;i<n;i++) {
                 s = in.next();
                 for(int j=0;j<m;j++) {
                     if(s.charAt(j)=='.') {
                          map[i][j] = 1;
                     }
                     if(s.charAt(j)=='#') {
                         map[i][j] =0;
                     }
                     if(s.charAt(j)=='S') {
                         map[i][j] = 1;
                         sx = i;
                         sy = j;
                     }
                     vis[i][j][0] = 0;
                     vis[i][j][1] = 0;
                     vis[i][j][2] = 0;
                 }
             }
//           for(int i=0;i<n;i++) {
//               for(int j=0;j<m;j++) {
//                   System.out.print(map[i][j]);
//               }
//               System.out.println();
//           }
             DFS(sx,sy,sx,sy);
             if(ans==1) {
                  System.out.println("Yes");
             }
             else System.out.println("No");
        }
    }
    private static void DFS(int nx, int ny, int sx, int sy) {
        // TODO 自动生成的方法存根
        if(ans==1)return ;
         if(vis[sx][sy][2]==1&&(vis[sx][sy][0]!=nx||vis[sx][sy][1]!=ny)) {
             ans = 1;
             return ;
         }
         if(vis[sx][sy][2]==1&&vis[sx][sy][0] ==nx&&vis[sx][sy][1] ==ny) {
             return ;
         }
         vis[sx][sy][2] =1;
         vis[sx][sy][0] =nx;
         vis[sx][sy][1] = ny;
         int nextx,nexty;
         for(int i=0;i<4;i++) {
              nextx = (nx+dire[i][0]+n)%n;
              nexty = (ny+dire[i][1]+m)%m;
              if(map[nextx][nexty]==1) {
                  DFS(nx+dire[i][0],ny+dire[i][1],nextx,nexty);
              }
         }
    }

}

代码如上,然后测试样例全部都是MLE 用洛谷的在线IDE试了下,样例却能跑。。。 到底是哪里出问题了啊 o(╥﹏╥)o

反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。