Java数据结构 递归迷宫学习

Java数据结构 递归迷宫学习,第1张

Java数据结构 递归迷宫学习

目录

 * 迷宫游戏

     * 找路径的方法


public class MiGong {

    public static void main(String[] args) {

        int[][] map = new int[8][8];

        for (int i = 0; i < 8; i++) {

            map[0][i] = 1;

            map[7][i] = 1;

        }

        for (int i = 0; i < 8; i++) {

            map[i][0] = 1;

            map[i][7] = 1;

        }



        map[6][4] = 1;

        map[5][4] = 1;

        map[4][5] = 1;

        map[4][4] = 1;

        map[7][5] = 0;

        for (int i = 0; i < 8; i++) {

            for (int j = 0; j < 8; j++) {

                System.out.print(map[i][j] + " ");

            }

            System.out.println();

        }
        // 设定开始区域,查看走过的迷宫情况,两条路径分开测试,结果都是一样的

        setWay(map, 6, 2);

            System.out.println("通关路径1——————————————————");

            for (int i = 0; i < 8; i++) {

                for (int j = 0; j < 8; j++) {

                    System.out.print(map[i][j] + " ");

                }

                System.out.println();

            }
        if (setWays(map, 1, 1)) {
            System.out.println("通关路径2——————————————————");
            for (int i = 0; i < 8; i++) {
                for (int j = 0; j < 8; j++) {
                    System.out.print(map[i][j] + " ");
                }
                System.out.println();
            }
        } else {
            System.out.println("通关失败");
        }
    }

    }

   

    public static boolean setWay(int[][] map, int i, int j) {

        if (map[7][5] == 2) {

            return true;

        } else {

            if (map[i][j] == 0) {

                map[i][j] = 2;

                if (setWay(map, i + 1, j)) {// 向下

                    return true;

                } else if (setWay(map, i , j+1)) {// 向右

                    return true;

                } else if (setWay(map, i, j-1)) {// 向上

                    return true;

                } else if (setWay(map, i - 1, j)) {// 向左

                    return true;

                } else {

                    map[i][j] = 3;

                    return false;

                }

            } else {

                return false;

            }

        }

    }

    //路径2,两条路径出来的结果一样....

    public static boolean setWays(int[][] map, int i, int j) {

        if (map[7][5] == 2) {

            return true;

        } else {

            if (map[i][j] == 0) {

                map[i][j] = 2;

                if (setWay(map, i, j+1 )) {// 向右

                    return true;

                } else if (setWay(map, i , j-1)) {//向左

                    return true;

                } else if (setWay(map, i-1, j )) {// 向上

                    return true;

                } else if (setWay(map, i+1 , j)) {// 向下

                    return true;

                } else {

                    map[i][j] = 3;

                    return false;

                }

            } else {

                return false;

            }

        }

    }

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存