我一直在为上课的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/