信息学社团邀请你解决汉诺塔问题

移动所有盘子到最右边的柱子 | 一次只能移动一个盘子 | 大盘子不能放在小盘子上
手动模式:点击选择一个盘子,然后点击目标柱子进行移动
A
B
C
移动方案:
点击「生成移动方案」按钮获取最优移动步骤
汉诺塔核心C++实现代码
// 汉诺塔递归求解函数 void hanoi(int n, char from, char to, char aux) { // 递归终止条件:只有一个盘子时直接移动 if (n == 1) { cout << "将盘子1从" << from << "移动到" << to << endl; return; } // 递归步骤1:将n-1个盘子从源柱移动到辅助柱 hanoi(n - 1, from, aux, to); // 递归步骤2:将第n个盘子从源柱移动到目标柱 cout << "将盘子" << n << "从" << from << "移动到" << to << endl; // 递归步骤3:将n-1个盘子从辅助柱移动到目标柱 hanoi(n - 1, aux, to, from); } // 主函数调用示例 int main() { int diskCount = 3; // 盘子数量 cout << "汉诺塔移动步骤(" << diskCount << "个盘子):" << endl; hanoi(diskCount, 'A', 'C', 'B'); // A:源柱, C:目标柱, B:辅助柱 return 0; }
当前模式: 手动模式手动
移动次数: 0
游戏状态: 准备开始
最少步数: 7
最优解排行榜
暂无记录,挑战最优解即可上榜!