javaで15パズル問題を解く検索アルゴリズムを書いています。パズルの状態を複製して新しい可能な動き (娘) を生成すると、それらは分離するのではなく、互いに変化します。
これが私のクローン方法です:
public FifteenPuzzleState clone() throws CloneNotSupportedException
{
FifteenPuzzleState copy = (FifteenPuzzleState)super.clone();
for(int i=0; i<copy.currentConfig.length; i++){
copy.currentConfig[i] = Arrays.copyOf(currentConfig[i], currentConfig[i].length);
}
return copy;
}
したがって、私の問題は、状態を複製してから変更すると、以前の状態と他のすべての複製にも影響することです。私の最初の考えは、2 次元配列のディープ コピーを適切に作成していないということでしたが、上記のコードに問題は見つかりませんでした。
助言がありますか?ありがとう