题解 | #迷宫问题#

迷宫问题

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;

    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 12:11
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:21
被夸真的超级开心,好可爱的姐姐
码农索隆:老色批们不用脑补了,我把金智妮的图找来了查看图片
点赞 评论 收藏
分享
06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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