杭电oj-1010-Java

杭电oj-1010-Java

import java.util.Scanner;

public class Main {
    static int N,M,T;
    static boolean flag;
    static String[][] mg=new String[10][10];
    static boolean[][] visit=new boolean[10][10];
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);                                     
        while (sc.hasNext()) {    
        int    N=sc.nextInt();
            int M=sc.nextInt();
            int T=sc.nextInt();
            int startX = 0,startY = 0;            
            for (int i = 0; i < N; i++) {
                for (int j = 0; j < M; j++) {
                    mg[i][j]=sc.next();
                    visit[i][j]=false;
                    if (mg[i][j]=="S") {
                        startX=i;
                        startY=j;
                    }                    
                }
            }
            flag=false;
            dfs(0,startX,startY);
            if (flag==true) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }            
    }

    private static  void dfs(int number, int x, int y) {
        // TODO Auto-generated method stub
        if (number>T||flag) {
            return ;
        }
        else if (number==T) {
            if (mg[x][y]=="D") {
                flag=true;
            }
            return ;
        }
        else if (mg[x][y]=="."||mg[x][y]=="S") {
            visit[x][y]=true;
            //down
            if (x<N-1&&canvisit(x+1,y)) {
                dfs(number+1, x+1, y);
            }
            //up
            if (x>0&&canvisit(x-1, y)) {
                dfs(number+1, x-1, y);
            }
            //right
            if (y<M-1&&canvisit(x, y+1)) {
                dfs(number+1, x, y+1);
            }
            //left
            if (y>0&&canvisit(x, y-1)) {
                dfs(number+1, x, y-1);
            }
            visit[x][y]=false;
        }
    }

    private static boolean canvisit(int x, int y) {
        // TODO Auto-generated method stub
        if (!visit[x][y]) {
            return true;
        }
        return false;
    }
}

代码有些问题 希望大神帮忙纠正

杭电oj-1010-Java