题解 | 迷宫问题

迷宫问题

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

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
           int row = scanner.nextInt();
           int column = scanner.nextInt();
           int[][] vals = new int[row][column];
           List<Integer> rows = new ArrayList<>();
           List<Integer> columns = new ArrayList<>();
           for(int i = 0; i < row; i ++)
           {
               for(int j = 0; j < column; j ++)
               {
                   vals[i][j] = scanner.nextInt();
               }
           }
           dfs(vals,0,0,rows,columns);
           for(int i = 0; i < rows.size(); i ++)
           {
               System.out.println("("  +rows.get(i) + "," + columns.get(i) + ")");
           }
        }
    }
     public static boolean dfs(int[][] vals,int row,int column,List<Integer> rows,List<Integer> columns)
    {
        rows.add(row);
        columns.add(column);
        vals[row][column] = 1;
        if(row == vals.length - 1 && column == vals[0].length - 1)
        {
            return true;
        }
        //向上走
        if(row - 1 >= 0 &&
        vals[row -1][column] == 0 &&
        dfs(vals,row - 1,column,rows,columns))
        {
             return true;
        }
        //向右走
        if(column + 1 < vals[0].length &&
                vals[row][column + 1] == 0 &&
                dfs(vals,row,column + 1,rows,columns))
        {
            return true;
        }

        //向下走
        if(row + 1 < vals.length &&
                vals[row + 1][column] == 0 &&
                dfs(vals,row + 1,column,rows,columns))
        {
            return true;
        }

        //向左走
        if(column - 1 >= 0 &&
                vals[row][column - 1] == 0 &&
                dfs(vals,row,column - 1,rows,columns))
        {
            return true;
        }
        //走到这儿说明此路不通
        rows.remove(rows.size() - 1);
        columns.remove(columns.size() - 1);
        return false;
    }
}

全部评论

相关推荐

nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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