【发布时间】:2011-11-27 17:50:26
【问题描述】:
我正在尝试用 Java 编写一个 3x3 平方位移谜题求解器。但是,我被困在我移动块的部分 - 我一直在使用我使用的算法得到一堆新的空白空间。经过一些测试,我确定这是因为尽管我使用了 clone() 命令,但当我更改“当前”时,v 的数组仍然受到影响。有谁知道这是为什么以及我该如何解决?我认为使用克隆后,我可以在不影响旧数组的情况下更改新数组。
if (!rightwall)
{
int[][] current = v.state.clone();
current[x][y] = current[x][y + 1];
current[x][y + 1] = 0;
State w = new State(current);
w.distance = v.distance + 1;
w.path = v;
System.out.println("Right Shift:");
w.print();
q.insert(w);
}
State 是一个表示二维数组以及一些属性的类 - State 代码的第一部分是
public class State {
int[][] state = new int[3][3];
int distance = 0;
boolean known = false;
State path = null;
State(int[][] newstate){
state = newstate.clone();
}
v 是表示当前位置的状态。 w 然后将是在将空白空间与旁边的空间切换后创建的“相邻”位置。
q 是一个队列。
【问题讨论】:
-
什么是
v?State是什么?q是什么?没有任何上下文,这段代码就没有任何意义。
标签: java