题解 | #迷宫问题#

迷宫问题

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

菜鸟思路,可能更易理解。
1、首先这题我们先不考虑输出,先找出这唯一的一条条路径吧
import java.util.*;  public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            //数据的大小
            int m = in.nextInt();
            int n = in.nextInt();
            int[][] migong = new int[m][n];
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < n; j++) {
                    migong[i][j] = in.nextInt();
                }
            }
            
            findMinRes(migong, 0, 0);
            //输出结果........

        }
    }
    // 0代表可走,1代表墙壁,2代表可以到达终点的格子 
    public static boolean findMinRes(int[][] migong, int x, int y) {
              //如果是左下角那么我们可以结束了
               if (x == migong.length - 1 && y == migong[0].length - 1) {
            return true;
        }        

        //首先假设这条路可以走         migong[x][y] = 2;                           //下 :这里有几个判断,1是判断下面的这个格子是不是到迷宫边缘了,2是判断下面的这个格子是不是可以走,3是判断如果走这个格子是不是能到终点         if (x + 1 < migong.length && migong[x + 1][y] == 0 &&                 findMinRes(migong, x + 1, y)) {
//如果上面三个判断都能满足,那返回true表示这个格子可以走到终点             return true;         }         //右         if (y + 1 < migong[0].length && migong[x][y + 1] == 0 &&                 findMinRes(migong, x, y + 1)) {             return true;         }         //上:同上         if (x - 1 >= 0 && migong[x - 1][y] == 0 && findMinRes(migong, x - 1, y)) {             return true;         }         //左:同上         if (y - 1 >= 0 && migong[x][y - 1] == 0 && findMinRes(migong, x, y - 1 )) {             return true;         }
//这条路不能走,也就等同于墙         migong[x][y] = 1;         return false;     } }
2、用自己感觉合适的方法返回这个二维数组中,数值为2的就行了

全部评论

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务