Download presentation
Presentation is loading. Please wait.
1
Hanoi Tower
2
A 기둥의 모든 원판을 C 기둥으로 이동시킨다. B 기둥은 필요할 때는 언제든지 사용이 가능하다. 한 번에 하나의 원판만 이동할 수 있다. 맨 위에 있는 원판만 이동할 수 있다. 크기가 작은 원판 위에 큰 원판이 쌓일 수 없다. 중간의 막대를 임시적으로 이용할 수 있으나 앞의 조건들을 지켜야 한다.
3
3개의 원판이 있는 경우 A B C
4
1 단계 A B C
5
2 단계 A B C
6
3 단계 A B C
7
4 단계 A B C
8
5 단계 A B C
9
6 단계 A B C
10
7 단계 A B C
11
4개의 원판이 있는 경우 A B C
12
4개의 원판이 있는 경우 1 단계 A B C
13
4개의 원판이 있는 경우 2 단계 A B C
14
4개의 원판이 있는 경우 3 단계 A B C
15
4개의 원판이 있는 경우 4 단계 A B C
16
4개의 원판이 있는 경우 5 단계 A B C
17
4개의 원판이 있는 경우 6 단계 A B C
18
4개의 원판이 있는 경우 7 단계 A B C
19
4개의 원판이 있는 경우 8 단계 A B C
20
4개의 원판이 있는 경우 9 단계 A B C
21
4개의 원판이 있는 경우 10 단계 A B C
22
4개의 원판이 있는 경우 11 단계 A B C
23
4개의 원판이 있는 경우 12 단계 A B C
24
4개의 원판이 있는 경우 13 단계 A B C
25
4개의 원판이 있는 경우 14 단계 A B C
26
4개의 원판이 있는 경우 15 단계 A B C
27
Hanoi Tower 를 프로그래밍 하시오. 4개의 원판을 이동시키는 프로그램을 작성하시오.
메인함수와 분리하여 재귀함수를 따로 작성하시오. 코드의 별 모양 * 부분만 코딩하시면 됩니다.
28
#include <stdio.h>
void hanoi_tower(int n, char from, char tmp, char to) { static int step=1; if (n == 1) printf("Step: %d 원판 1을 %c에서 %c로 옮긴다. \n", step++, from, to); else { hanoi_tower(*******************); printf("Step: %d 원판 %d을 %c에서 %c로 옮긴다 \n", step++, n, from, to); } void main(void) hanoi_tower(4, 'A', 'B', 'C');
Similar presentations