Tower of Hanoi เป็นปริศนาคณิตศาสตร์ มี 3 เสา และแผ่นวงกลมขนาดต่างกัน วางซ้อนกันบนเสาแรก เรียงจากเล็กไปใหญ่ (เล็กสุดบนสุด) เป้าหมาย: ย้ายทั้งหมดไปเสาที่ 3 ตามกติกา:
- ย้ายได้ทีละ 1 แผ่น
- ย้ายได้เฉพาะแผ่นบนสุดของเสาใดเสาหนึ่ง
- ห้ามวางแผ่นใหญ่บนแผ่นเล็ก
ตัวอย่าง
Input - 3
Output - A to B, A to C, B to C, A to B, C to A, C to B, A to B
Explanation - ใช้ Recursive Function แก้ Tower of Hanoi
ตัวอย่าง
#include <stdio.h>
void TOH(int n, char x, char y, char z) {
if (n > 0) {
TOH(n - 1, x, z, y);
printf("\n%c to %c", x, y);
TOH(n - 1, z, y, x);
}
}
int main() {
int n = 3;
TOH(n, 'A', 'B', 'C');
}ผลลัพธ์
A to B A to C B to C A to B C to A C to B A to B