深搜算法(是否能喝到星巴克)
import java.util.*; import java.math.*; public class Main { static int n,m,sx,sy,ex,ey; static char map[][]; static boolean visit[][]; static boolean dui=false; static int move[][]={{1,0},{-1,0},{0,1},{0,-1}}; public static void main(String[] args) { Scanner input = new Scanner(System.in); n = input.nextInt(); m = input.nextInt(); String ss = input.nextLine(); map = new char[n][m]; visit = new boolean[n][m]; sx=0;sy=0;ex=0;ey=0; for (int i = 0; i < n; i++) { String s = input.nextLine(); for (int i1 = 0; i1 < m; i1++) { map[i][i1] = s.charAt(i1); if(s.charAt(i1)=='S') { sx = i; sy = i1; } if(s.charAt(i1)=='E') { ex = i; ey = i1; } } } visit[sx][sy] = true; dfs(sx,sy); if(dui) System.out.println("Yes"); else System.out.println("No"); } public static void dfs(int x,int y) { visit[x][y] = true; if(x==ex&&y==ey||dui) { dui = true; return; } for(int i=0;i<4;i++) { int dx = x+move[i][0],dy = y +move[i][1]; if(dx>=0&&dx<n&&dy>=0&&dy<m&&!visit[dx][dy]&&map[dx][dy]!='#'&&!dui) { dfs(dx,dy); } } } }