#include <stdio.h>
#include<Windows.h>
#pragma warning (disable : 4996)

int cnt = 0;  // 이동 횟수에 이용되는 전역 변수
void moveHanoi(char a, char b, char c, int n);
void main()
{
	int n;
	printf("input Hanoi number (exit : 음수 ) : ");
	scanf("%d", &n);

	// 임의의 음수를 입력할 때까지 계속 원판 개수인 n에 대한 하노이 탑의 이동 출력
	while (n > 0)
	{
		// 입력된 원판 개수인 n에 대해 하노이 탑의 이동 출력
		moveHanoi('A', 'B', 'C', n);
		cnt = 0;
		printf("input Hanoi number (exit : 음수 ) : ");
		scanf("%d", &n);
	}
	system("PAUSE");
}

// 재귀적으로 정의된 하노이 탑 이동 함수
void moveHanoi(char from, char temp, char to, int n)
{
	if (n == 1)
	{
		++cnt;
		printf("%5d: 막대 %c에서 막대 %c로 원판 %d를 이동\n", cnt, from, to, 1);
	}
	else
	{
		moveHanoi(from, to, temp, n - 1);
		++cnt;
		printf("%5d: 막대 %c에서 막대 %c로 원판 %d를 이동\n", cnt, from, to, n);
		moveHanoi(temp, from, to, n - 1);
	}
}