代码:
class Position{ int x; int y; public Position(int x,int y){ this.x=x; this.y=y; }}// 迷宫寻路public class Maze{ private int size; private int[][] matrix;// 代表迷宫的二维数组,0表示通路 /** * 构建迷宫 * 迷宫的左上角为入口,右下角为出口 * @param size 二维数组的边长 * @param percent 可通过区域占整体的比例 */ public void build(int size,double percent){ this.size=size; matrix=new int[size][size]; for(int i=0;ipercent){ matrix[i][j]=0; }else{ matrix[i][j]=1; } } } // 入口出口不能堵死 matrix[0][0]=0; matrix[size-1][size-1]=0; } // 打印迷宫 public void displayMatrix(){ for(int i=0;i stack=new Stack (Position.class,size*size); matrix[0][0]=1; Position curr=new Position(0,0); stack.push(curr); while(curr.x!=size-1 || curr.y!=size-1){ Position next=getWayout(curr); if(next!=null){ stack.push(curr); matrix[next.x][next.y]=1; curr=next; }else{ if(stack.isEmpty()){ return false; }else{ curr=stack.pop(); } } } // matrix 取回原值 for(int i=0;i
输出之一:
迷宫图示☆☆★☆☆☆☆★☆★☆☆☆☆☆☆☆☆☆☆☆★☆☆☆★☆☆★☆☆☆★☆☆★☆★☆☆☆☆☆★★☆★☆☆★☆☆☆☆★☆★☆☆☆★★☆☆☆☆☆☆★☆☆☆☆☆☆☆☆☆☆★☆☆★★★☆☆★★☆☆☆★★☆☆☆☆☆☆迷宫走得通,下图圆点为路径⊙☆★☆☆☆☆★☆★⊙☆☆☆☆☆☆☆☆☆⊙★☆☆☆★☆☆★☆⊙☆★☆☆★☆★☆☆⊙☆☆★★☆★☆☆★⊙⊙⊙☆★☆★☆☆☆★★⊙☆☆☆☆☆★☆☆☆⊙⊙⊙⊙☆☆☆★☆☆★★★⊙☆★★☆☆☆★★☆⊙⊙⊙⊙⊙
输出之二:
迷宫图示☆☆☆☆★☆☆☆★☆☆★☆★★★☆☆☆★★☆☆☆☆☆☆☆☆☆☆☆☆☆☆★☆☆☆☆★☆☆☆★☆★★★★☆☆☆☆★★☆☆★☆★☆☆★☆☆★☆☆★☆☆☆☆☆☆☆☆☆☆☆☆☆★☆☆★☆★★☆☆★★☆☆☆★☆☆迷宫走不通