본문 바로가기

ComputerScience/DataStructure

하노이 타워

1. 재귀함수적 사고

2. 탈출 조건 고려

 



#include <stdio.h>
#include <string.h>  

char arr_start[5] = { '1', '2', '3' };
char arr_temp[5] = { '\0' }; //배열 0으로 초기화
char arr_end[5] = { '\0' };
int n = 3;

void move(char arr1[], char arr2[])
{


	for (int i = n; i >0; i--)
	{
		arr2[i] = arr2[i - 1];

	}

	arr2[0] = arr1[0];

	for (int i = 0; i < n; i++)
	{
		arr1[i] = arr1[i + 1];
	}
}

void visualize()
{
	for (int i = 0; i < n; i++)
	{
		printf(" %c   %c   %c\n", arr_start[i], arr_temp[i], arr_end[i]);

	}
	printf("=== === ===\n");
}

void hanoi(char arr1[], char arr2[], char arr3[],int num) 
{	

	if (num == 1)
	{
		move(arr1, arr3);
		visualize();
		return;
	}
	else
	{
		num--;
		hanoi(arr1, arr3, arr2, num);
		move(arr1, arr3);
		visualize();
		hanoi(arr2, arr1, arr3,num);
	}
}


int main()
{
	hanoi(arr_start, arr_temp, arr_end,n);
}

 

'ComputerScience > DataStructure' 카테고리의 다른 글

Queue  (0) 2020.07.24
[Stack] 계산기구현  (0) 2020.07.10
[자바스크립트] 연결리스트  (0) 2020.05.12