我有一个用java编写的ascii迷宫解算器,使用char数组,它将正确路径的每个位置设置为前一个位置+ 1.我使用以下代码然后从中获取正确的路径但是它只适用于垂直运动。任何有关此事的帮助将不胜感激。
int x, y;
int max = Math.max((int)maze[maze.length-1][maze.length-2],
(int)maze[maze.length-2][maze.length-1]);
if(maze[maze.length-1][maze.length-2] == max)
{
x = maze.length-1;
y = maze.length-2;
}
else
{
x = maze.length-2;
y = maze.length-1;
}
for(int cur=0;cur<ans;cur++)
{
try
{
correct[x][y] = '*';
if(maze[x-1][y] == maze[x][y]-1)
x = x - 1;
else if(maze[x+1][y] == maze[x][y]-1)
x = x + 1;
else if(maze[x][y-1] == maze[x][y]-1)
y = y - 1;
else if(maze[x][y+1] == maze[x][y]-1)
y = y + 1;
}catch(Throwable e){}
}
答案 0 :(得分:3)
对不起,如果不满意回答你自己的问题,但感谢@HovercraftFullOfEels我通过以下修改解决了我自己的问题:
for(int cnt = 0; cnt < numSteps; cnt++)
{
correct[x][y] = '*';
if(x-1 >= 0 && maze[x-1][y] == maze[x][y]-1)
x--;
else if(x+1 < maze.length && maze[x+1][y] == maze[x][y]-1)
x++;
else if(y-1 >= 0 && maze[x][y-1] == maze[x][y]-1)
y--;
else if(y+1 < maze.length && maze[x][y+1] == maze[x][y]-1)
y++;
}