교수님홈페이지에 자세히보니깐 힌트가 있더라구요... 이런..
역시 수업시간에 졸면 안된다니깐...
void Hanoi(int nDisk, int nFrom, int nTo)
{
if(nDisk > 0){
Hanoi(nDisk-1,nFrom,6-nFrom-nTo);
printf("%d -> %d\n",nFrom,nTo);
Hanoi(nDisk-1,6-nFrom-nTo,nTo);
}
}
서영재 님이 쓰신 글 :
: 도무지 못해서 이렇게 올립니다.
:
: hanoi(5, 1, 2); // 이렇다면.. 5개의 탑을 1번에서 2번으로 옮기는...
:
: void Hanoi(int nDisk, int nFrom, int nTo)
: {
: // if (TerminalCondition)
: // Simple Solution.
: // General rule.
: }
:
: 양식은 이렇습니다.
: 이함수에서 더이상 바꿀수가 없죠...
:
: 제가 머리를 짜고 짜고, 온갖 인터넷을 다뒤져도
: 저함수로는 안됩니다.
:
: 인수가 4개..
: 즉 탑의높이와 몇번에서 몇번으로 옮길지와 temp하나의 인수가 있어야지 재귀호출로 풀리는데...
: 이건 도저히 안풀리네요...
:
: 힌트라도 부탁드리겠습니다.
|