我一直在为上课的8个难题而努力,并且有点沮丧地签出代码。我需要编写有关左,右,上和下运动的代码。当我删除权利时,在扩展以获取后继节点并将其添加后,代码为double数组给出了“索引超出范围-1”的错误。下面的代码是否适合通过迷宫/继任者,从而使孩子回到父母身边?左,上,下和右代码是否有误?

当我返回几个测试时,我确实看到0的移动向右移动,然后在到达边缘时向下移动,因此我不确定下面的代码是否真正起作用,或者其中是否需要执行某些操作被改变。

难题需要给出以下输出:

1 2 3

4 5 6

7 8 0

典型输出显示:

1 7 8

5 4 2

3 6 0

因此,路径似乎是错误的,我相信它与下面的运动代码有关,但是我不确定。我的问题是下面的代码准确,是否需要更改某些内容?是引起ArrayIndexoutOfBounds -1与此相关的原因,还是其他原因?

ArrayList<Node> successors = new ArrayList<Node>();
//generate a successor from moving the 0 to the right
if (col < size-1) {
    int[][] right = Board.copyBoard(board);
    right[row][col] = right[row][col + 1];
    right[row][col+1] = 0;
    successors.add(new Node(right));
} else if (col < size - 1) {
    int[][] left = Board.copyBoard(board);
    left[row][col] = left[row][col-1];
    left[row][col-1] = 0;
    successors.add(new Node(left));
} else if (row < size-1) {
    int[][] down = Board.copyBoard(board);
    down[row][col] = down[row + 1][col];
    down[row + 1][col] = 0;
    successors.add(new Node(down));
} else if (row < size - 1) {
    int[][] up = Board.copyBoard(board);
    up[row][col] = up[row-1][col];
    up[row-1][col] = 0;
    successors.add(new Node(up));
}

return successors;

最佳答案

目前,您的代码会检查col 0,最后一行> 0

关于java - 8-Puzzle Java算法难题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54587839/

10-09 05:55