package com.hnsw.Demo01; import java.util.Scanner; public class MiGong { public static void main(String[] args) { Scanner in = new Scanner(System.in); int huang = 9; int lie = 8; int[][] arr = new int[huang][lie]; for (int i = 0;i < lie;i++){ arr[0][i] = 1; arr[lie][i] = 1; } for (int i = 0;i < huang;i++){ arr[i][0] = 1; arr[i][lie - 1] = 1; } arr[3][1] = 1; arr[3][2] = 1; A obj = new A(); obj.findWay(arr,1,1); for (int i = 0;i < arr.length;i++){ for (int j = 0;j < arr[i].length;j++){ System.out.print(arr[i][j]); } System.out.println(); } } } class A{ public boolean findWay(int[][] arr,int i,int j) { /* 1.0代表可以走,1代表不可以走,2代表走过,3代表走过走不通 2.先往下面走,走不通在走右边,在走不通走上面,走不通走左边。 */ if (arr[7][6] == 2){//出口位置,如果出口位置等于2(2代表我们走过)的话就是找到这个位置了我们就返回一个turn; return true; }else{ if (arr[i][j] == 0){//当前位置位置是0 arr[i][j] = 2;//假定可以走通 if (findWay(arr, i + 1, j)){//先走下 return true; }else if (findWay(arr, i, j + 1)){//在走右 return true; }else if (findWay(arr, i - 1, j)){//在走上 return true; }else if (findWay(arr, i, j - 1)){//在走左 return true; }else {//走不通就把当前位置改成3,返回一个false; arr[i][j] = 3; return false; } }else {//如果不等于0(0代表可以走),就返回一个false; return false; } } } }
用递归解决迷宫
该篇博客通过一个Java程序展示了如何利用深度优先搜索(DFS)算法解决矩阵迷宫问题。程序中创建了一个二维数组表示迷宫,并设置了起点和终点,然后通过递归的DFS方法寻找从起点到终点的路径。当遇到障碍物时,算法会尝试向下、右、上、左四个方向探索。最终,程序会输出可行路径并显示在矩阵中。
摘要由CSDN通过智能技术生成