#include<stdio.h> #include<math.h> void Move(int n, char a, char c)//将第n个圆盘 从a移到c { printf("Move %d: %c->%c\n", n, a, c); } void Hanoi(int n, char a, char b, char c)//将n个圆盘 借助于b 从a移动到c { if (n == 1) Move(n, a, c); else { Hanoi(n - 1, a, c, b); Move(n, a, c); Hanoi(n - 1, b, a, c); } } int Hanoi_count(int n) { return pow(2, n) - 1; } int main() { int n; printf("Input n: "); scanf_s("%d", &n); printf("一共移动%d次!\n", Hanoi_count(n)); Hanoi(n, 'A', 'B', 'C');//将n个圆盘 借助于B柱 从A柱移动到C柱 }
C语言—汉诺塔问题
最新推荐文章于 2025-05-28 20:03:32 发布