问题描述
用java语言实现一个简单的迷宫,要求找一条从左上角节点到右下角节点的可通行的迷宫路径信息,如果路径存在,则打印这条路径信息。
代码如下
定义常量:
public interface Constant {
// 右方向
int RIGHT = 0;
// 下方向
int DOWN = 1;
// 左方向
int LEFT = 2;
// 上方向
int UP = 3;
}
迷宫类定义:
public class Optimalmaze {
// 迷宫所有的路径存储在二维数组当中
private MazeNode[][] maze;
// 存储迷宫路径节点的队列结构,采用层层扩张的方式,寻找迷宫最优的路径信息
private QueueLink<MazeNode> queue;
// 迷宫的行数
private int row;
// 迷宫的列数
private int col;
// 记录迷宫路径节点的行走信息
private MazeNode[] pathrecord;
/**
* 迷宫初始化
* @param row
* @param col
*/
public Optimalmaze(int row, int col) {
this.row = row;
this.col = col;
this.maze = new MazeNode[row][col];
this.queue = new QueueLink<>();
this.pathrecord = new MazeNode[row*col];
}
/**
* 初始化指定位置的迷宫节点
* @param data
* @param i
* @param j
*/
public void initMazeNode(int data, int i, int j) {
this.maze[i][j] = new MazeNode(data, i, j);
}
/**
* 修改迷宫所有节点四个方向的行走状态信息
*/
public void initMazeNodePathState() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if(j<col-1 && this.maze[i][j+1].val == 0){
this.maze[i][j].state[Constant.RIGHT] = true;
}
if(i&