news 2026/9/27 0:16:07

东方博宜OJ 1222:经典递归问题 —— 汉诺塔

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
东方博宜OJ 1222:经典递归问题 —— 汉诺塔

【题目来源】
https://oj.czos.cn/p/1222

【题目描述】
汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着 64 个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。
面对庞大的数字(移动圆片的次数)
18446744073709551615,看来,众僧们耗尽毕生精力也不可能完成金片的移动。

后来,这个传说就演变为汉诺塔游戏:
1.有三根杆子 A,B,C。A 杆上有若干碟子。
2.每次移动一块碟子,小的只能叠在大的上面。
3.把所有碟子从 A 杆全部移到 C 杆上。
经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动金片:如 3 阶汉诺塔的移动:A→C, A→B, C→B, A→C, B→A, B→C, A→C。
此外,汉诺塔问题也是程序设计中的经典递归问题。
算法思路:
1.如果只有一个金片,则把该金片从源移动到目标棒,结束。
2.如果有 n 个金片,则把前 n-1 个金片移动到辅助的棒,然后把自己移动到目标棒,最后再把前 n-1 个移动到目标棒。

【输入格式】
一个整数 N,表示 A 柱上有 N 个碟子。(0<n≤10)

【输出格式】
若干行,即移动的最少步骤。

【输入样例】
3

【输出样例】
A To C
A To B
C To B
A To C
B To A
B To C
A To C

【数据范围】
0<n≤10​​​​​​​

【算法分析】
经典递归问题。

【算法代码】

#include <bits/stdc++.h> using namespace std; void hnt(int n,char x,char y,char z) { if(n==0) return; hnt(n-1,x,z,y); cout<<x<<" To "<<z<<endl; hnt(n-1,y,x,z); } int main() { int n; cin>>n; hnt(n,'A','B','C'); return 0; } /* in: 3 out: A To C A To B C To B A To C B To A B To C A To C */





【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/115372258
https://oj.czos.cn/p/1222




版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 1:56:41

终极免费抽奖神器:Magpie-LuckyDraw全平台部署指南

Magpie-LuckyDraw作为一款功能强大的年会抽奖系统&#xff0c;凭借其炫酷的3D动画效果和跨平台部署能力&#xff0c;成为各类活动现场的首选抽奖工具。这款开源抽奖软件支持Windows、Mac、Linux、Web和Docker全平台运行&#xff0c;让抽奖环节既公平又充满视觉冲击力。 【免费下…

作者头像 李华
网站建设 2026/9/26 1:56:36

技术人才职业发展:从工具思维到价值创造的成长阶梯

技术人才职业发展&#xff1a;从工具思维到价值创造的成长阶梯 【免费下载链接】engineering-management A collection of inspiring resources related to engineering management and tech leadership 项目地址: https://gitcode.com/GitHub_Trending/en/engineering-manag…

作者头像 李华
网站建设 2026/9/26 18:40:37

百度贴吧用户脚本终极指南:告别繁琐操作,体验贴吧新境界

百度贴吧用户脚本终极指南&#xff1a;告别繁琐操作&#xff0c;体验贴吧新境界 【免费下载链接】baidu-tieba-userscript 需要&#xff1a;支持扩展的浏览器&#xff0c;例如谷歌&#xff0c;yandex&#xff0c;火狐等&#xff1b;扩展&#xff1a;Tampermonkey脚本管理器; …

作者头像 李华
网站建设 2026/9/26 18:11:27

等待节点-–-behaviac

原文 等待&#xff08;Wait&#xff09;节点在指定的数值内&#xff08;单位根据自己的使用场景来定&#xff09;持续保持为运行&#xff08;Running&#xff09;状态&#xff0c;数值到达之后则返回成功&#xff0c;如下图所示&#xff1a; 需要配置“持续时间”&#xff0c;…

作者头像 李华
网站建设 2026/9/26 1:56:32

Nginx性能优化实战:从基础配置到高级调优的完整指南

Nginx性能优化实战&#xff1a;从基础配置到高级调优的完整指南 【免费下载链接】Linux-Tutorial Linux-Tutorial是一个Linux系统教程&#xff0c;适合用于学习和掌握Linux命令行操作和系统管理技能。特点&#xff1a;内容详细、实例丰富、适合入门。 项目地址: https://gitc…

作者头像 李华
网站建设 2026/9/26 1:56:49

ThingsGateway:开源智能设备管理平台的终极指南

ThingsGateway&#xff1a;开源智能设备管理平台的终极指南 【免费下载链接】ThingsGateway ThingsGateway 是基于Net6/7/8的跨平台边缘采集网关&#xff0c;提供底层PLC通讯库&#xff0c;通讯调试软件等。 项目地址: https://gitcode.com/gh_mirrors/th/ThingsGateway …

作者头像 李华