我有一段代码,它可以立即解决迷宫问题,我想让它在每一步都打印迷宫

时间:2016-02-18 09:16:01

标签: java recursion maze

我将我的迷宫放在一个类中,并将我的递归放在一个布尔值中,因此每当我尝试打印它时,它都会回调该类并打印原始地图而不是进度。你还有其他办法吗?

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;

1 个答案:

答案 0 :(得分:1)

你遇到的问题是,你没有区分你的执行类和你的对象(尝试让你的迷宫课外的执行课,你会看到,我的意思)。你应该尝试类似的东西:

labyrinth.grid[i][j]="x";

代替你最后一行中的代码,因为你的对象迷宫是你要改变的对象,而不是你所在的迷宫:-)。或者,您可以在没有print_maze()的情况下致电labyrinth,因为您已经在myTasks