我正在开发一个迷宫解算器程序,该程序基本上从文本文件中读取迷宫,从起点开始,检查周围的所有边并移动到开放空间,标记前一个位置并在找到出口时终止。 / p>
虽然算法本身已经完成,但有些事情我想澄清一下。该程序需要使用通用类Stack,Queue和Coordinates(存储当前的x,y坐标),我没有使用(我使用Vector来保存位置)和其他操作,例如堆叠队列内部叠加。
这是主循环:
if(maz[x][y-1]==' '||maz[x][y-1]=='S'){
if(maz[x][y-1]=='S')
exitfound=true;
maz[x][y]='*';
maz[x][y-1]='@';
y=y-1;
}
它检查上面的坐标是开放空间还是出口('S'),如果是真的,它会移动到那里,同时用*标记前一个位置,并用'@标记它移动到的位置”。这也与其他3个方面重复。在程序结束时,所有步行空间都会标有*。但是,我需要使用所述泛型类来操作坐标。
这些是必需的类及其对象:
Stack<Coordinate> path = new Stack<Coordinate>(40);
Stack<Queue<Coordinate>> possibilities = new Stack<Queue<Coordinate>>(40);
Coordinate current = new Coordinate(x,y);
Queue<Coordinate> queue = new Queue<Coordinate>(3);
我不明白如何在current
对象上存储坐标,并在queue
类的Queue<Coordinate>
对象中插入坐标,并在queue
上堆叠possibilities
对象{1}}对象,来自班级Stack<Queue<Coordinate>>
。这是怎么做到的?