第一行输入两个正整数
。
接下来的
行每行输入一个长为
的仅包含字符 `.` 与 `#` 的字符串,描述整个迷宫。
保证起点
和终点
均为空地。
若旺仔哥哥可以走到终点,则输出单词
;否则输出
。
3 5 .##.# .#... ...#.
Yes
路线如下:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
char[][] map = new char[a+2][b+2];//地图外围一圈边界,避免数组越界
for(int i = 1; i < a+1; i++){
String str = in.next();
for(int j = 1; j < b+1; j++){
map[i][j] = str.charAt(j-1);
}
}
System.out.println(method(1,1,map,a,b) ? "Yes" : "No");
}
}
public static boolean method(int ia,int ib,char[][] map,int a,int b){//a,b代表终点
map[ia][ib] = '#';//标记走过的点
if(ia == a && ib == b){return true;}//到达终点
if(map[ia][ib-1] == '.'){if (method(ia,ib-1,map,a,b)) return true;}//向上走
if(map[ia][ib+1] == '.'){if (method(ia,ib+1,map,a,b)) return true;}//向下走
if(map[ia-1][ib] == '.'){if (method(ia-1,ib,map,a,b)) return true;}//向左走
if(map[ia+1][ib] == '.'){if (method(ia+1,ib,map,a,b)) return true;}//向右走
return false;
}
}