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 |