题解 | 迷宫寻路

迷宫寻路

https://www.nowcoder.com/practice/0c8930e517444d04b426e9703d483ed4

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;
    }
}












全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务