-1

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 次元配列のディープ コピーを適切に作成していないということでしたが、上記のコードに問題は見つかりませんでした。

助言がありますか?ありがとう

4

1 に答える 1

5

あなたは正しいです。clone()配列内の各要素を手動で ing して、ディープ コピーを作成する必要があります。

于 2012-05-11T21:30:30.587 に答える