나는 루빅스 큐브 해결사를 만들기 위해 BFS를 사용하기 위해 노력하고있어 목표
의 결과로 큐
아마-쉬운 수정 문제 나는 그냥 얕은 사본, 루빅 큐브의 다른 국가가 추가되도록되어 일단 queue<array>
에 스크램블 매직 큐브의 또 다른 상태를 가져온 거에요 때마다
큐의 이전 상태는 실제로 변경되어 더 새로운 상태와 일치합니다. 즉, queue<array>
안에있는 모든 요소가 동일하게 유지되도록하려면 어떻게해야합니까? 내가 넣어 전에
나는 그것이 큐에서 나오는 때 기본적으로이 코드를 사용
https://stackoverflow.com/a/129395/984680
이 큐브의 새 복사본을 만들 해결하기 위해 만들었습니다 시도하고, 그 다음 나는 또 다른 새로운 복사본을 생성 큐에 다시 넣습니다 (다른 상태에서). 아래 코드는 새 복사본이 대기열에 삽입되기 전에 어떻게 만들어 지는지 보여줍니다.
//make deep copy of ccube (char array)
char[][][] newcube = DeepClone(ccube);
buffer.Enqueue(new State(newcube, calg + face + " ")); //even though newcube gets put into array, it ends up changed after ccube changes
그리고 이것은 배열이 큐의 앞쪽에서 빠져 나올 때 만들어지는 딥 카피입니다. 나는에 추가 할 새로운 국가가 여전히 이전의 상태와 동일합니다 (뭔가 나에게 말한다 내가 너무 많은 복사본을 만들 필요가 없습니다) 배열 그렇게 여러 번 복제 비록
ccube = DeepClone(buffer.Peek().cube);
. 매 큐브의 모든면을 매번 모든면에서 만들었지 만 큐의 내부에는 2 개의 별개 요소가 있기 때문에 이것을 알고 있습니다.
도움을 줄 수있는 사람에게 미리 감사드립니다.