카테고리 없음

(C/C++) 하노이 탑 Tower of Hanoi

고니자니 2022. 11. 20. 09:52
반응형

#C언어 #하노이타워 #하노이 #타워 #퍼즐 #hanoitower #퀴즈 #퍼즐

 

하노이 탑(Tower of Hanoi)

세 개의 기둥과 이 기둥에 꽂을 수 있는 여러 개의 원판이 있다.

첫번째 기둥에 쌓여 있는 원판을 세 번째 기둥으로 옮기는 것이다.

  • 한 번에 한 개씩 옮길 수 있다.
  • 가장 위에 있는 원판만 옮길 수 있다.
  • 큰 원판이 작은 원판 위에 있으면 안된다.

 

C언어

#include <stdio.h>

void hanoitower(int n, char a, char b, char c)  
{
    if (n > 0) {
        hanoitower(n - 1, a, c, b);
        printf("%d번 원반을 %c 에서 %c 로 옮김\n", n, a, b);
        hanoitower(n - 1, c, b, a);
    }
}

int main()
{
    int n = 3; // 원반의 개수

    hanoitower(n, 'A', 'B', 'C');

    return 0;
}

 

 

 

C++

using namespace std;
#include <iostream>

void hanoitower(int n, char a, char b, char c)
{
    if (n > 0) {
        hanoitower(n - 1, a, c, b);
        cout << n << "번 원반을 " << a << "에서 " << b << "로 옮김\n";
            hanoitower(n - 1, c, b, a);
    }
}

int main()
{
    int n = 3; // 원반의 개수

    hanoitower(n, '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 로 옮김
반응형