题解 | #迷宫问题#

迷宫问题

https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static class Pos{
        int x;
        int y;
        Pos(int x,int y){
            this.x=x;
            this.y=y;
        }
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int n=in.nextInt();
        int m=in.nextInt();
        int[][] a=new int[n][m];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                a[i][j]=in.nextInt();
            }
        }
        List<Pos> list=new ArrayList<>();
        dfs(a,0,0,list);
        for(Pos pos:list){
            System.out.println("("+pos.x+","+pos.y+")");
        }
    }

    public static boolean dfs(int[][] a,int x,int y,List<Pos> list){
        list.add(new Pos(x,y));
        a[x][y]=1;
        //终点
        if(x==a.length-1 && y==a[0].length-1 ){
            return true;
        }
        //向右能走
        if(x+1<a.length && a[x+1][y]==0){
            if(dfs(a,x+1,y,list))
                return true;
        }
        //左
        if(x-1>-1 && a[x-1][y]==0){
            if(dfs(a,x-1,y,list))
                return true;
        }
        //上
        if(y+1<a[0].length && a[x][y+1]==0){
            if(dfs(a,x,y+1,list))
                return true;
        }
        //下
        if(y-1>-1 && a[x][y-1]==0){
            if(dfs(a,x,y-1,list))
                return true;
        }
        list.remove(list.size()-1);
        a[x][y]=0;
        return false;

    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-25 11:34
大飞的诡术妖姬:看岔了,还以为这公司要避雷,没绷住
点赞 评论 收藏
分享
10-16 22:56
门头沟学院 C++
1234567800:歌尔今年给211开14-15k吗,我本地人连面试都不给😂
点赞 评论 收藏
分享
09-05 02:50
已编辑
南京理工大学 Java
大拿老师:你只要把实验室项目放第一个,就应该有面试了 但是面试通过率应该不高 现在的问题很明确,就是你的简历主项目是一个烂大街的,而你的学历在大厂又是最差的 校招简历上只有这两个东西是不一样的,一个是学校,一个是主项目 你这两个目前都是最差的,大厂又是在笔试后,面试官谁简历的时候肯定过不了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务