728x90
// 하노이탑 문제
#include <stdio.h>
#include <stdlib.h>
// 원판 n개를 막대 from으로 부터 to로 other을 이용하여 옮긴다.
void hanoi_tower (int n, char from, char to, char other)
{
// 원판이 1개인 경우
if(n==1) printf("원판 1을 %c 에서 %c 로 옮긴다.\n", from, to);
else {
hanoi_tower (n-1, from, other, to);
printf("원판 %d를 %c에서 %c로 옮긴다.\n", n, from, to);
hanoi_tower (n-1, other, to, from);
}
}
int main()
{
hanoi_tower(4,'A','B','C');
return 0;
}
/*출력값
원판 1을 A 에서 B 로 옮긴다.
원판 2를 A에서 C로 옮긴다.
원판 1을 B 에서 C 로 옮긴다.
원판 3를 A에서 B로 옮긴다.
원판 1을 C 에서 A 로 옮긴다.
원판 2를 C에서 B로 옮긴다.
원판 1을 A 에서 B 로 옮긴다.
원판 4를 A에서 C로 옮긴다.
원판 1을 B 에서 C 로 옮긴다.
원판 2를 B에서 A로 옮긴다.
원판 1을 C 에서 A 로 옮긴다.
원판 3를 B에서 C로 옮긴다.
원판 1을 A 에서 B 로 옮긴다.
원판 2를 A에서 C로 옮긴다.
원판 1을 B 에서 C 로 옮긴다.
원판 5를 A에서 B로 옮긴다.
원판 1을 C 에서 A 로 옮긴다.
원판 2를 C에서 B로 옮긴다.
원판 1을 A 에서 B 로 옮긴다.
원판 3를 C에서 A로 옮긴다.
원판 1을 B 에서 C 로 옮긴다.
원판 2를 B에서 A로 옮긴다.
원판 1을 C 에서 A 로 옮긴다.
원판 4를 C에서 B로 옮긴다.
원판 1을 A 에서 B 로 옮긴다.
원판 2를 A에서 C로 옮긴다.
원판 1을 B 에서 C 로 옮긴다.
원판 3를 A에서 B로 옮긴다.
원판 1을 C 에서 A 로 옮긴다.
원판 2를 C에서 B로 옮긴다.
원판 1을 A 에서 B 로 옮긴다.
*/
728x90
'Data structure' 카테고리의 다른 글
[C언어로 쉽게 풀어쓴 자료구조] Chapter 4 - 스택(Stack) (0) | 2022.02.18 |
---|---|
[C언어로 쉽게 풀어쓴 자료구조] Chapter 3 - 동적 메모리 (0) | 2022.02.17 |
[C언어로 쉽게 풀어쓴 자료구조] Chapter 2 순환 - 팩토리얼(순환,반복) / 거듭제곱(순환,반복) / 파보나치 수열(순환,반복) (0) | 2022.02.15 |
기수 정렬 (radix sort) (0) | 2021.07.18 |
힙 / 힙 정렬 (Heap / Heap Sort) (0) | 2021.07.17 |