티스토리 뷰

윤성우의 열혈 자료구조 chapter 02 재귀 - 하노이 타워 알고리즘

 

하노이 타워

1. 작은 원반 n-1개를(맨 아래의 원반을 제외한 나머지 원반을) A에서 B로 이동

2. 큰 원반(맨 아래의 원반) 1개를 A에서 C로 이동

3. 작은 원반(위의 1단계에서 옮겨진 원반) n-1개를 B에서 C로 이동

 

---------------------------------------------코드--------------------------------------------------

#include <stdio.h>

void HanoiTowerMove(int num, char from, char by, char to){

           if(num==1){       // 이동할 원반의 수가 1개라면

           printf(“원반1을 %c에서 %c로 이동\n”, from, to);

           }

           else{    

           HanoiTowerMove(num-1, from, to, by);                                //1번

           printf(“원반%d를 %c에서 %c로 이동\n”, num, from, to);          //2번

           HanoiTowerMove(num-1, by, from, to);                                //3번

}

int main(){

           HanoiTowerMove(3, ‘A’, ‘B’, ‘C’);

           return 0;

}

 

---------------------------------------------------------------------------------------------------

HanoiTowerMove(3, ‘A’, ‘B’, ‘C’)

 

else문

      1. HanoiTowerMove(2, ‘A’, ‘C’, ‘B’);

                 else문

                 1. HanoiTowerMove(1, ‘A’, ‘B’, ‘C’)

                            if(num==1)문 -> 원반1을 A에서 C로 이동

                 2. 원반2를 A에서 B로 이동

                 3. HanoiTowerMove(1, ‘C’, ‘A’, ‘B’)

                            if(num==1)문 -> 원반1을 C에서 B로 이동

      2. 원반3를 A에서 C로 이동

      3. HanoiTowerMove(2, ‘B’, ‘A’, ‘C’)

                 else문

                 1. HanoiTowerMove(1, ‘B’, ‘C’, ‘A’)

                            if(num==1)문 -> 원반1을 B에서 A로 이동

                 2. 원반2를 B에서 C로 이동

                 3. HanoiTowerMove(1, ‘A’, ‘B’, ‘C’)

                            if(num==1)문 -> 원반1을 A에서 C로 이동

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함