老鼠出迷宫

 

 

 

public class Re{

    //定义一个main方法 
    
    public static void main(String[] args){
        //将没有阻碍的路以1代替
        int[][]maze={
            {1,1,1},
            {0,0,1},
            {1,1,1}
        };
        int[][]path= new int[3][3];//记录路径,1=走过
        if(solveMaze(maze,0,0,path)){//从(0,0)开始向右向下走 遍历全部的位置
            System.out.println("找到路经");
            printPath(path);
            
        }else{
            System.out.println("无解");

        }
        
                
    }
    static boolean solveMaze(int [][] maze,int x,int y,int[][] path){
        // 越界或遇到障碍物
        if(x>=3||y>=3||x<0||y<0||maze[x][y]==0){
            return false;
        } 
        //标记当前路径已经走过
        path[x][y]=1;
        //达到终点
        if(x == 2 && y == 2) {
            
            return true;

        }    
        
        //尝试向右走
        if(solveMaze(maze,x,y+1,path)) {
            
            return true;

        }
            
        //尝试向下走
        if(solveMaze(maze,x+1,y,path)) {
            
            return true;
        }
        //回溯(取消标记)走过但发现有障碍更改为0
        path[x][y]=0;
        return false;
            
    }    //打印路径
    static void printPath(int[][] path){
            for(int i=0;i<3;i++){
                for(int j=0;j<3;j++){
                    if(path[i][j]==1){//走过且OK的路径
                        System.out.print("("+i+","+j+")");
                    }
                    
                }
                System.out.println();
            }
        
  }
 }    


    

 

posted @ 2025-05-08 14:12  胖豆芽  阅读(8)  评论(0)    收藏  举报