我有一段代码,它可以立即解决迷宫问题,我希望它在走的每一步都打印出迷宫
i have a piece of code, it instantly solve the maze, i want it to print the maze every step it makes
我把迷宫放在 class 中,递归放在布尔值中,所以每次当我尝试打印它时,它都会回调 class 并打印原始地图而不是进步。你还有其他方法吗?
class Maze {
String[][] (map of the maze)
public void print_maze () {
bla bla bla
} // print the maze
public boolean solve (int i, int j) throws InterruptedException {
Maze labyrinth = new Maze();|
|i tried to print the maze like this
labyrinth.print_maze(); |and they keep printing original maze
|
boolean done = false;
if (valid (i, j)) {
grid[i][j] = "C"; // cell has been tried
if (i== grid[0].length-8 && j == grid[0].length-1)
{done = true;} // maze is solved
else {
done = solve (i+1, j); // down
if (!done)
done = solve (i, j+1); // right
if (!done)
done = solve (i-1, j); // up
if (!done)
done = solve (i, j-1); // left
}
if (done) // part of the final path
grid[i][j] = "X";
// labyrinth.print_maze();
}
return done;
你的问题是,你没有区分你的执行 class 和你的对象(尝试让执行 class 在你的迷宫 class 之外,你会看到, 我的意思是)。你应该尝试这样的事情:
labyrinth.grid[i][j]="x";
而不是最后一行中的代码,因为您的对象迷宫是您要更改的对象,而不是您所在的迷宫:-)。或者你可以只调用 print_maze()
而不调用 labyrinth
因为你已经在其中了。
我把迷宫放在 class 中,递归放在布尔值中,所以每次当我尝试打印它时,它都会回调 class 并打印原始地图而不是进步。你还有其他方法吗?
class Maze {
String[][] (map of the maze)
public void print_maze () {
bla bla bla
} // print the maze
public boolean solve (int i, int j) throws InterruptedException {
Maze labyrinth = new Maze();|
|i tried to print the maze like this
labyrinth.print_maze(); |and they keep printing original maze
|
boolean done = false;
if (valid (i, j)) {
grid[i][j] = "C"; // cell has been tried
if (i== grid[0].length-8 && j == grid[0].length-1)
{done = true;} // maze is solved
else {
done = solve (i+1, j); // down
if (!done)
done = solve (i, j+1); // right
if (!done)
done = solve (i-1, j); // up
if (!done)
done = solve (i, j-1); // left
}
if (done) // part of the final path
grid[i][j] = "X";
// labyrinth.print_maze();
}
return done;
你的问题是,你没有区分你的执行 class 和你的对象(尝试让执行 class 在你的迷宫 class 之外,你会看到, 我的意思是)。你应该尝试这样的事情:
labyrinth.grid[i][j]="x";
而不是最后一行中的代码,因为您的对象迷宫是您要更改的对象,而不是您所在的迷宫:-)。或者你可以只调用 print_maze()
而不调用 labyrinth
因为你已经在其中了。